{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Chapter 14 – Recurrent Neural Networks**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "_This notebook contains all the sample code and solutions to the exercises in chapter 14._"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Setup"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "First, let's make sure this notebook works well in both python 2 and 3, import a few common modules, ensure MatplotLib plots figures inline and prepare a function to save the figures:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# To support both python 2 and python 3\n",
    "from __future__ import division, print_function, unicode_literals\n",
    "\n",
    "# Common imports\n",
    "import numpy as np\n",
    "import os\n",
    "\n",
    "# to make this notebook's output stable across runs\n",
    "def reset_graph(seed=42):\n",
    "    tf.reset_default_graph()\n",
    "    tf.set_random_seed(seed)\n",
    "    np.random.seed(seed)\n",
    "\n",
    "# To plot pretty figures\n",
    "%matplotlib inline\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "plt.rcParams['axes.labelsize'] = 14\n",
    "plt.rcParams['xtick.labelsize'] = 12\n",
    "plt.rcParams['ytick.labelsize'] = 12\n",
    "\n",
    "# Where to save the figures\n",
    "PROJECT_ROOT_DIR = \".\"\n",
    "CHAPTER_ID = \"rnn\"\n",
    "\n",
    "def save_fig(fig_id, tight_layout=True):\n",
    "    path = os.path.join(PROJECT_ROOT_DIR, \"images\", CHAPTER_ID, fig_id + \".png\")\n",
    "    print(\"Saving figure\", fig_id)\n",
    "    if tight_layout:\n",
    "        plt.tight_layout()\n",
    "    plt.savefig(path, format='png', dpi=300)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Then of course we will need TensorFlow:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import tensorflow as tf"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Basic RNNs"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Manual RNN"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "reset_graph()\n",
    "\n",
    "n_inputs = 3\n",
    "n_neurons = 5\n",
    "\n",
    "X0 = tf.placeholder(tf.float32, [None, n_inputs])\n",
    "X1 = tf.placeholder(tf.float32, [None, n_inputs])\n",
    "\n",
    "Wx = tf.Variable(tf.random_normal(shape=[n_inputs, n_neurons],dtype=tf.float32))\n",
    "Wy = tf.Variable(tf.random_normal(shape=[n_neurons,n_neurons],dtype=tf.float32))\n",
    "b = tf.Variable(tf.zeros([1, n_neurons], dtype=tf.float32))\n",
    "\n",
    "Y0 = tf.tanh(tf.matmul(X0, Wx) + b)\n",
    "Y1 = tf.tanh(tf.matmul(Y0, Wy) + tf.matmul(X1, Wx) + b)\n",
    "\n",
    "init = tf.global_variables_initializer()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "X0_batch = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 0, 1]]) # t = 0\n",
    "X1_batch = np.array([[9, 8, 7], [0, 0, 0], [6, 5, 4], [3, 2, 1]]) # t = 1\n",
    "\n",
    "with tf.Session() as sess:\n",
    "    init.run()\n",
    "    Y0_val, Y1_val = sess.run([Y0, Y1], feed_dict={X0: X0_batch, X1: X1_batch})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[-0.0664006   0.9625767   0.68105793  0.7091854  -0.898216  ]\n",
      " [ 0.9977755  -0.719789   -0.9965761   0.9673924  -0.9998972 ]\n",
      " [ 0.99999774 -0.99898803 -0.9999989   0.9967762  -0.9999999 ]\n",
      " [ 1.         -1.         -1.         -0.99818915  0.9995087 ]]\n"
     ]
    }
   ],
   "source": [
    "print(Y0_val)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[ 1.         -1.         -1.          0.4020025  -0.9999998 ]\n",
      " [-0.12210419  0.62805265  0.9671843  -0.9937122  -0.2583937 ]\n",
      " [ 0.9999983  -0.9999994  -0.9999975  -0.85943305 -0.9999881 ]\n",
      " [ 0.99928284 -0.99999815 -0.9999058   0.9857963  -0.92205757]]\n"
     ]
    }
   ],
   "source": [
    "print(Y1_val)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Using `static_rnn()`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "n_inputs = 3\n",
    "n_neurons = 5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "reset_graph()\n",
    "\n",
    "X0 = tf.placeholder(tf.float32, [None, n_inputs])\n",
    "X1 = tf.placeholder(tf.float32, [None, n_inputs])\n",
    "\n",
    "basic_cell = tf.contrib.rnn.BasicRNNCell(num_units=n_neurons)\n",
    "output_seqs, states = tf.contrib.rnn.static_rnn(basic_cell, [X0, X1],\n",
    "                                                dtype=tf.float32)\n",
    "Y0, Y1 = output_seqs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "init = tf.global_variables_initializer()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "X0_batch = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 0, 1]])\n",
    "X1_batch = np.array([[9, 8, 7], [0, 0, 0], [6, 5, 4], [3, 2, 1]])\n",
    "\n",
    "with tf.Session() as sess:\n",
    "    init.run()\n",
    "    Y0_val, Y1_val = sess.run([Y0, Y1], feed_dict={X0: X0_batch, X1: X1_batch})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.30741334, -0.32884315, -0.6542847 , -0.9385059 ,  0.52089024],\n",
       "       [ 0.99122757, -0.9542541 , -0.7518079 , -0.9995208 ,  0.9820235 ],\n",
       "       [ 0.9999268 , -0.99783254, -0.8247353 , -0.9999963 ,  0.99947774],\n",
       "       [ 0.996771  , -0.68750614,  0.8419969 ,  0.9303911 ,  0.8120684 ]],\n",
       "      dtype=float32)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Y0_val"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.99998885, -0.99976057, -0.0667929 , -0.9999803 ,  0.99982214],\n",
       "       [-0.6524943 , -0.51520866, -0.37968948, -0.5922594 , -0.08968379],\n",
       "       [ 0.99862397, -0.99715203, -0.03308626, -0.9991566 ,  0.9932902 ],\n",
       "       [ 0.99681675, -0.9598194 ,  0.39660627, -0.8307606 ,  0.79671973]],\n",
       "      dtype=float32)"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Y1_val"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "from tensorflow_graph_in_jupyter import show_graph"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "        <iframe seamless style=\"width:1200px;height:620px;border:0\" srcdoc=\"\n",
       "        <script src=&quot;//cdnjs.cloudflare.com/ajax/libs/polymer/0.3.3/platform.js&quot;></script>\n",
       "        <script>\n",
       "          function load() {\n",
       "            document.getElementById(&quot;graph0.3745401188473625&quot;).pbtxt = 'node {\\n  name: &quot;Placeholder&quot;\\n  op: &quot;Placeholder&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;shape&quot;\\n    value {\\n      shape {\\n        dim {\\n          size: -1\\n        }\\n        dim {\\n          size: 3\\n        }\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;Placeholder_1&quot;\\n  op: &quot;Placeholder&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;shape&quot;\\n    value {\\n      shape {\\n        dim {\\n          size: -1\\n        }\\n        dim {\\n          size: 3\\n        }\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/Shape&quot;\\n  op: &quot;Shape&quot;\\n  input: &quot;Placeholder&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;out_type&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/strided_slice/stack&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/strided_slice/stack_1&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/strided_slice/stack_2&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/strided_slice&quot;\\n  op: &quot;StridedSlice&quot;\\n  input: &quot;rnn/Shape&quot;\\n  input: &quot;rnn/strided_slice/stack&quot;\\n  input: &quot;rnn/strided_slice/stack_1&quot;\\n  input: &quot;rnn/strided_slice/stack_2&quot;\\n  attr {\\n    key: &quot;Index&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;begin_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;ellipsis_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;end_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;new_axis_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;shrink_axis_mask&quot;\\n    value {\\n      i: 1\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/ExpandDims/dim&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/ExpandDims&quot;\\n  op: &quot;ExpandDims&quot;\\n  input: &quot;rnn/strided_slice&quot;\\n  input: &quot;rnn/BasicRNNCellZeroState/ExpandDims/dim&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;Tdim&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/Const&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 5\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/concat/axis&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/concat&quot;\\n  op: &quot;ConcatV2&quot;\\n  input: &quot;rnn/BasicRNNCellZeroState/ExpandDims&quot;\\n  input: &quot;rnn/BasicRNNCellZeroState/Const&quot;\\n  input: &quot;rnn/BasicRNNCellZeroState/concat/axis&quot;\\n  attr {\\n    key: &quot;N&quot;\\n    value {\\n      i: 2\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;Tidx&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/zeros/Const&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_FLOAT\\n        tensor_shape {\\n        }\\n        float_val: 0.0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/zeros&quot;\\n  op: &quot;Fill&quot;\\n  input: &quot;rnn/BasicRNNCellZeroState/concat&quot;\\n  input: &quot;rnn/BasicRNNCellZeroState/zeros/Const&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;index_type&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/ExpandDims_1/dim&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/ExpandDims_1&quot;\\n  op: &quot;ExpandDims&quot;\\n  input: &quot;rnn/strided_slice&quot;\\n  input: &quot;rnn/BasicRNNCellZeroState/ExpandDims_1/dim&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;Tdim&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/Const_1&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 5\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/shape&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 2\\n          }\\n        }\\n        tensor_content: &quot;\\\\010\\\\000\\\\000\\\\000\\\\005\\\\000\\\\000\\\\000&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/min&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_FLOAT\\n        tensor_shape {\\n        }\\n        float_val: -0.6793662309646606\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/max&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_FLOAT\\n        tensor_shape {\\n        }\\n        float_val: 0.6793662309646606\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/RandomUniform&quot;\\n  op: &quot;RandomUniform&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/shape&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;seed&quot;\\n    value {\\n      i: 42\\n    }\\n  }\\n  attr {\\n    key: &quot;seed2&quot;\\n    value {\\n      i: 20\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/sub&quot;\\n  op: &quot;Sub&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/max&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/min&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/mul&quot;\\n  op: &quot;Mul&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/RandomUniform&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/sub&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform&quot;\\n  op: &quot;Add&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/mul&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/min&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel&quot;\\n  op: &quot;VariableV2&quot;\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;container&quot;\\n    value {\\n      s: &quot;&quot;\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;shape&quot;\\n    value {\\n      shape {\\n        dim {\\n          size: 8\\n        }\\n        dim {\\n          size: 5\\n        }\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;shared_name&quot;\\n    value {\\n      s: &quot;&quot;\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/Assign&quot;\\n  op: &quot;Assign&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;use_locking&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n  attr {\\n    key: &quot;validate_shape&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/read&quot;\\n  op: &quot;Identity&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/bias/Initializer/zeros&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/bias&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_FLOAT\\n        tensor_shape {\\n          dim {\\n            size: 5\\n          }\\n        }\\n        float_val: 0.0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/bias&quot;\\n  op: &quot;VariableV2&quot;\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/bias&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;container&quot;\\n    value {\\n      s: &quot;&quot;\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;shape&quot;\\n    value {\\n      shape {\\n        dim {\\n          size: 5\\n        }\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;shared_name&quot;\\n    value {\\n      s: &quot;&quot;\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/bias/Assign&quot;\\n  op: &quot;Assign&quot;\\n  input: &quot;rnn/basic_rnn_cell/bias&quot;\\n  input: &quot;rnn/basic_rnn_cell/bias/Initializer/zeros&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/bias&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;use_locking&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n  attr {\\n    key: &quot;validate_shape&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/bias/read&quot;\\n  op: &quot;Identity&quot;\\n  input: &quot;rnn/basic_rnn_cell/bias&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/concat/axis&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/concat&quot;\\n  op: &quot;ConcatV2&quot;\\n  input: &quot;Placeholder&quot;\\n  input: &quot;rnn/BasicRNNCellZeroState/zeros&quot;\\n  input: &quot;rnn/basic_rnn_cell/concat/axis&quot;\\n  attr {\\n    key: &quot;N&quot;\\n    value {\\n      i: 2\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;Tidx&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/MatMul&quot;\\n  op: &quot;MatMul&quot;\\n  input: &quot;rnn/basic_rnn_cell/concat&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/read&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;transpose_a&quot;\\n    value {\\n      b: false\\n    }\\n  }\\n  attr {\\n    key: &quot;transpose_b&quot;\\n    value {\\n      b: false\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/BiasAdd&quot;\\n  op: &quot;BiasAdd&quot;\\n  input: &quot;rnn/basic_rnn_cell/MatMul&quot;\\n  input: &quot;rnn/basic_rnn_cell/bias/read&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;data_format&quot;\\n    value {\\n      s: &quot;NHWC&quot;\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/Tanh&quot;\\n  op: &quot;Tanh&quot;\\n  input: &quot;rnn/basic_rnn_cell/BiasAdd&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/concat_1/axis&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/concat_1&quot;\\n  op: &quot;ConcatV2&quot;\\n  input: &quot;Placeholder_1&quot;\\n  input: &quot;rnn/basic_rnn_cell/Tanh&quot;\\n  input: &quot;rnn/basic_rnn_cell/concat_1/axis&quot;\\n  attr {\\n    key: &quot;N&quot;\\n    value {\\n      i: 2\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;Tidx&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/MatMul_1&quot;\\n  op: &quot;MatMul&quot;\\n  input: &quot;rnn/basic_rnn_cell/concat_1&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/read&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;transpose_a&quot;\\n    value {\\n      b: false\\n    }\\n  }\\n  attr {\\n    key: &quot;transpose_b&quot;\\n    value {\\n      b: false\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/BiasAdd_1&quot;\\n  op: &quot;BiasAdd&quot;\\n  input: &quot;rnn/basic_rnn_cell/MatMul_1&quot;\\n  input: &quot;rnn/basic_rnn_cell/bias/read&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;data_format&quot;\\n    value {\\n      s: &quot;NHWC&quot;\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/Tanh_1&quot;\\n  op: &quot;Tanh&quot;\\n  input: &quot;rnn/basic_rnn_cell/BiasAdd_1&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;init&quot;\\n  op: &quot;NoOp&quot;\\n  input: &quot;^rnn/basic_rnn_cell/bias/Assign&quot;\\n  input: &quot;^rnn/basic_rnn_cell/kernel/Assign&quot;\\n}\\n';\n",
       "          }\n",
       "        </script>\n",
       "        <link rel=&quot;import&quot; href=&quot;https://tensorboard.appspot.com/tf-graph-basic.build.html&quot; onload=load()>\n",
       "        <div style=&quot;height:600px&quot;>\n",
       "          <tf-graph-basic id=&quot;graph0.3745401188473625&quot;></tf-graph-basic>\n",
       "        </div>\n",
       "    \"></iframe>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "show_graph(tf.get_default_graph())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Packing sequences"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "n_steps = 2\n",
    "n_inputs = 3\n",
    "n_neurons = 5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "reset_graph()\n",
    "\n",
    "X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
    "X_seqs = tf.unstack(tf.transpose(X, perm=[1, 0, 2]))\n",
    "\n",
    "basic_cell = tf.contrib.rnn.BasicRNNCell(num_units=n_neurons)\n",
    "output_seqs, states = tf.contrib.rnn.static_rnn(basic_cell, X_seqs,\n",
    "                                                dtype=tf.float32)\n",
    "outputs = tf.transpose(tf.stack(output_seqs), perm=[1, 0, 2])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "init = tf.global_variables_initializer()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_batch = np.array([\n",
    "        # t = 0      t = 1 \n",
    "        [[0, 1, 2], [9, 8, 7]], # instance 1\n",
    "        [[3, 4, 5], [0, 0, 0]], # instance 2\n",
    "        [[6, 7, 8], [6, 5, 4]], # instance 3\n",
    "        [[9, 0, 1], [3, 2, 1]], # instance 4\n",
    "    ])\n",
    "\n",
    "with tf.Session() as sess:\n",
    "    init.run()\n",
    "    outputs_val = outputs.eval(feed_dict={X: X_batch})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[[-0.45652324 -0.68064123  0.40938237  0.63104504 -0.45732826]\n",
      "  [-0.9428799  -0.9998869   0.94055814  0.9999985  -0.9999997 ]]\n",
      "\n",
      " [[-0.8001535  -0.9921827   0.7817797   0.9971032  -0.9964609 ]\n",
      "  [-0.637116    0.11300927  0.5798437   0.4310559  -0.6371699 ]]\n",
      "\n",
      " [[-0.93605185 -0.9998379   0.9308867   0.9999815  -0.99998295]\n",
      "  [-0.9165386  -0.9945604   0.896054    0.99987197 -0.9999751 ]]\n",
      "\n",
      " [[ 0.9927369  -0.9981933  -0.55543643  0.9989031  -0.9953323 ]\n",
      "  [-0.02746338 -0.73191994  0.7827872   0.9525682  -0.9781773 ]]]\n"
     ]
    }
   ],
   "source": [
    "print(outputs_val)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[-0.9428799  -0.9998869   0.94055814  0.9999985  -0.9999997 ]\n",
      " [-0.637116    0.11300927  0.5798437   0.4310559  -0.6371699 ]\n",
      " [-0.9165386  -0.9945604   0.896054    0.99987197 -0.9999751 ]\n",
      " [-0.02746338 -0.73191994  0.7827872   0.9525682  -0.9781773 ]]\n"
     ]
    }
   ],
   "source": [
    "print(np.transpose(outputs_val, axes=[1, 0, 2])[1])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Using `dynamic_rnn()`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "n_steps = 2\n",
    "n_inputs = 3\n",
    "n_neurons = 5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "reset_graph()\n",
    "\n",
    "X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
    "\n",
    "basic_cell = tf.contrib.rnn.BasicRNNCell(num_units=n_neurons)\n",
    "outputs, states = tf.nn.dynamic_rnn(basic_cell, X, dtype=tf.float32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "init = tf.global_variables_initializer()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_batch = np.array([\n",
    "        [[0, 1, 2], [9, 8, 7]], # instance 1\n",
    "        [[3, 4, 5], [0, 0, 0]], # instance 2\n",
    "        [[6, 7, 8], [6, 5, 4]], # instance 3\n",
    "        [[9, 0, 1], [3, 2, 1]], # instance 4\n",
    "    ])\n",
    "\n",
    "with tf.Session() as sess:\n",
    "    init.run()\n",
    "    outputs_val = outputs.eval(feed_dict={X: X_batch})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[[-0.85115266  0.87358344  0.5802911   0.8954789  -0.0557505 ]\n",
      "  [-0.999996    0.99999577  0.9981815   1.          0.37679607]]\n",
      "\n",
      " [[-0.9983293   0.9992038   0.98071456  0.999985    0.25192663]\n",
      "  [-0.7081804  -0.0772338  -0.85227895  0.5845349  -0.78780943]]\n",
      "\n",
      " [[-0.9999827   0.99999535  0.9992863   1.          0.5159072 ]\n",
      "  [-0.9993956   0.9984095   0.83422637  0.99999976 -0.47325212]]\n",
      "\n",
      " [[ 0.87888587  0.07356028  0.97216916  0.9998546  -0.7351168 ]\n",
      "  [-0.9134514   0.3600957   0.7624866   0.99817705  0.80142   ]]]\n"
     ]
    }
   ],
   "source": [
    "print(outputs_val)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "        <iframe seamless style=\"width:1200px;height:620px;border:0\" srcdoc=\"\n",
       "        <script src=&quot;//cdnjs.cloudflare.com/ajax/libs/polymer/0.3.3/platform.js&quot;></script>\n",
       "        <script>\n",
       "          function load() {\n",
       "            document.getElementById(&quot;graph0.3745401188473625&quot;).pbtxt = 'node {\\n  name: &quot;Placeholder&quot;\\n  op: &quot;Placeholder&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;shape&quot;\\n    value {\\n      shape {\\n        dim {\\n          size: -1\\n        }\\n        dim {\\n          size: 2\\n        }\\n        dim {\\n          size: 3\\n        }\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/Rank&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 3\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/range/start&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 2\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/range/delta&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/range&quot;\\n  op: &quot;Range&quot;\\n  input: &quot;rnn/range/start&quot;\\n  input: &quot;rnn/Rank&quot;\\n  input: &quot;rnn/range/delta&quot;\\n  attr {\\n    key: &quot;Tidx&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/concat/values_0&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 2\\n          }\\n        }\\n        tensor_content: &quot;\\\\001\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/concat/axis&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/concat&quot;\\n  op: &quot;ConcatV2&quot;\\n  input: &quot;rnn/concat/values_0&quot;\\n  input: &quot;rnn/range&quot;\\n  input: &quot;rnn/concat/axis&quot;\\n  attr {\\n    key: &quot;N&quot;\\n    value {\\n      i: 2\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;Tidx&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/transpose&quot;\\n  op: &quot;Transpose&quot;\\n  input: &quot;Placeholder&quot;\\n  input: &quot;rnn/concat&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;Tperm&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/Shape&quot;\\n  op: &quot;Shape&quot;\\n  input: &quot;rnn/transpose&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;out_type&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/strided_slice/stack&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/strided_slice/stack_1&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 2\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/strided_slice/stack_2&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/strided_slice&quot;\\n  op: &quot;StridedSlice&quot;\\n  input: &quot;rnn/Shape&quot;\\n  input: &quot;rnn/strided_slice/stack&quot;\\n  input: &quot;rnn/strided_slice/stack_1&quot;\\n  input: &quot;rnn/strided_slice/stack_2&quot;\\n  attr {\\n    key: &quot;Index&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;begin_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;ellipsis_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;end_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;new_axis_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;shrink_axis_mask&quot;\\n    value {\\n      i: 1\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/ExpandDims/dim&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/ExpandDims&quot;\\n  op: &quot;ExpandDims&quot;\\n  input: &quot;rnn/strided_slice&quot;\\n  input: &quot;rnn/BasicRNNCellZeroState/ExpandDims/dim&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;Tdim&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/Const&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 5\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/concat/axis&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/concat&quot;\\n  op: &quot;ConcatV2&quot;\\n  input: &quot;rnn/BasicRNNCellZeroState/ExpandDims&quot;\\n  input: &quot;rnn/BasicRNNCellZeroState/Const&quot;\\n  input: &quot;rnn/BasicRNNCellZeroState/concat/axis&quot;\\n  attr {\\n    key: &quot;N&quot;\\n    value {\\n      i: 2\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;Tidx&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/zeros/Const&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_FLOAT\\n        tensor_shape {\\n        }\\n        float_val: 0.0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/zeros&quot;\\n  op: &quot;Fill&quot;\\n  input: &quot;rnn/BasicRNNCellZeroState/concat&quot;\\n  input: &quot;rnn/BasicRNNCellZeroState/zeros/Const&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;index_type&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/ExpandDims_1/dim&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/ExpandDims_1&quot;\\n  op: &quot;ExpandDims&quot;\\n  input: &quot;rnn/strided_slice&quot;\\n  input: &quot;rnn/BasicRNNCellZeroState/ExpandDims_1/dim&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;Tdim&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/BasicRNNCellZeroState/Const_1&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 5\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/Shape_1&quot;\\n  op: &quot;Shape&quot;\\n  input: &quot;rnn/transpose&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;out_type&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/strided_slice_1/stack&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/strided_slice_1/stack_1&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/strided_slice_1/stack_2&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/strided_slice_1&quot;\\n  op: &quot;StridedSlice&quot;\\n  input: &quot;rnn/Shape_1&quot;\\n  input: &quot;rnn/strided_slice_1/stack&quot;\\n  input: &quot;rnn/strided_slice_1/stack_1&quot;\\n  input: &quot;rnn/strided_slice_1/stack_2&quot;\\n  attr {\\n    key: &quot;Index&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;begin_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;ellipsis_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;end_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;new_axis_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;shrink_axis_mask&quot;\\n    value {\\n      i: 1\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/Shape_2&quot;\\n  op: &quot;Shape&quot;\\n  input: &quot;rnn/transpose&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;out_type&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/strided_slice_2/stack&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/strided_slice_2/stack_1&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 2\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/strided_slice_2/stack_2&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/strided_slice_2&quot;\\n  op: &quot;StridedSlice&quot;\\n  input: &quot;rnn/Shape_2&quot;\\n  input: &quot;rnn/strided_slice_2/stack&quot;\\n  input: &quot;rnn/strided_slice_2/stack_1&quot;\\n  input: &quot;rnn/strided_slice_2/stack_2&quot;\\n  attr {\\n    key: &quot;Index&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;begin_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;ellipsis_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;end_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;new_axis_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;shrink_axis_mask&quot;\\n    value {\\n      i: 1\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/ExpandDims/dim&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/ExpandDims&quot;\\n  op: &quot;ExpandDims&quot;\\n  input: &quot;rnn/strided_slice_2&quot;\\n  input: &quot;rnn/ExpandDims/dim&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;Tdim&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/Const&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 5\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/concat_1/axis&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/concat_1&quot;\\n  op: &quot;ConcatV2&quot;\\n  input: &quot;rnn/ExpandDims&quot;\\n  input: &quot;rnn/Const&quot;\\n  input: &quot;rnn/concat_1/axis&quot;\\n  attr {\\n    key: &quot;N&quot;\\n    value {\\n      i: 2\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;Tidx&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/zeros/Const&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_FLOAT\\n        tensor_shape {\\n        }\\n        float_val: 0.0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/zeros&quot;\\n  op: &quot;Fill&quot;\\n  input: &quot;rnn/concat_1&quot;\\n  input: &quot;rnn/zeros/Const&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;index_type&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/time&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/TensorArray&quot;\\n  op: &quot;TensorArrayV3&quot;\\n  input: &quot;rnn/strided_slice_1&quot;\\n  attr {\\n    key: &quot;clear_after_read&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;dynamic_size&quot;\\n    value {\\n      b: false\\n    }\\n  }\\n  attr {\\n    key: &quot;element_shape&quot;\\n    value {\\n      shape {\\n        dim {\\n          size: -1\\n        }\\n        dim {\\n          size: 5\\n        }\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;identical_element_shapes&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n  attr {\\n    key: &quot;tensor_array_name&quot;\\n    value {\\n      s: &quot;rnn/dynamic_rnn/output_0&quot;\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/TensorArray_1&quot;\\n  op: &quot;TensorArrayV3&quot;\\n  input: &quot;rnn/strided_slice_1&quot;\\n  attr {\\n    key: &quot;clear_after_read&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;dynamic_size&quot;\\n    value {\\n      b: false\\n    }\\n  }\\n  attr {\\n    key: &quot;element_shape&quot;\\n    value {\\n      shape {\\n        dim {\\n          size: -1\\n        }\\n        dim {\\n          size: 3\\n        }\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;identical_element_shapes&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n  attr {\\n    key: &quot;tensor_array_name&quot;\\n    value {\\n      s: &quot;rnn/dynamic_rnn/input_0&quot;\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/TensorArrayUnstack/Shape&quot;\\n  op: &quot;Shape&quot;\\n  input: &quot;rnn/transpose&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;out_type&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/TensorArrayUnstack/strided_slice/stack&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/TensorArrayUnstack/strided_slice/stack_1&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/TensorArrayUnstack/strided_slice/stack_2&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/TensorArrayUnstack/strided_slice&quot;\\n  op: &quot;StridedSlice&quot;\\n  input: &quot;rnn/TensorArrayUnstack/Shape&quot;\\n  input: &quot;rnn/TensorArrayUnstack/strided_slice/stack&quot;\\n  input: &quot;rnn/TensorArrayUnstack/strided_slice/stack_1&quot;\\n  input: &quot;rnn/TensorArrayUnstack/strided_slice/stack_2&quot;\\n  attr {\\n    key: &quot;Index&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;begin_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;ellipsis_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;end_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;new_axis_mask&quot;\\n    value {\\n      i: 0\\n    }\\n  }\\n  attr {\\n    key: &quot;shrink_axis_mask&quot;\\n    value {\\n      i: 1\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/TensorArrayUnstack/range/start&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/TensorArrayUnstack/range/delta&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/TensorArrayUnstack/range&quot;\\n  op: &quot;Range&quot;\\n  input: &quot;rnn/TensorArrayUnstack/range/start&quot;\\n  input: &quot;rnn/TensorArrayUnstack/strided_slice&quot;\\n  input: &quot;rnn/TensorArrayUnstack/range/delta&quot;\\n  attr {\\n    key: &quot;Tidx&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/TensorArrayUnstack/TensorArrayScatter/TensorArrayScatterV3&quot;\\n  op: &quot;TensorArrayScatterV3&quot;\\n  input: &quot;rnn/TensorArray_1&quot;\\n  input: &quot;rnn/TensorArrayUnstack/range&quot;\\n  input: &quot;rnn/transpose&quot;\\n  input: &quot;rnn/TensorArray_1:1&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/transpose&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/Maximum/x&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/Maximum&quot;\\n  op: &quot;Maximum&quot;\\n  input: &quot;rnn/Maximum/x&quot;\\n  input: &quot;rnn/strided_slice_1&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/Minimum&quot;\\n  op: &quot;Minimum&quot;\\n  input: &quot;rnn/strided_slice_1&quot;\\n  input: &quot;rnn/Maximum&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/iteration_counter&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Enter&quot;\\n  op: &quot;Enter&quot;\\n  input: &quot;rnn/while/iteration_counter&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;frame_name&quot;\\n    value {\\n      s: &quot;rnn/while/while_context&quot;\\n    }\\n  }\\n  attr {\\n    key: &quot;is_constant&quot;\\n    value {\\n      b: false\\n    }\\n  }\\n  attr {\\n    key: &quot;parallel_iterations&quot;\\n    value {\\n      i: 32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Enter_1&quot;\\n  op: &quot;Enter&quot;\\n  input: &quot;rnn/time&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;frame_name&quot;\\n    value {\\n      s: &quot;rnn/while/while_context&quot;\\n    }\\n  }\\n  attr {\\n    key: &quot;is_constant&quot;\\n    value {\\n      b: false\\n    }\\n  }\\n  attr {\\n    key: &quot;parallel_iterations&quot;\\n    value {\\n      i: 32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Enter_2&quot;\\n  op: &quot;Enter&quot;\\n  input: &quot;rnn/TensorArray:1&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;frame_name&quot;\\n    value {\\n      s: &quot;rnn/while/while_context&quot;\\n    }\\n  }\\n  attr {\\n    key: &quot;is_constant&quot;\\n    value {\\n      b: false\\n    }\\n  }\\n  attr {\\n    key: &quot;parallel_iterations&quot;\\n    value {\\n      i: 32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Enter_3&quot;\\n  op: &quot;Enter&quot;\\n  input: &quot;rnn/BasicRNNCellZeroState/zeros&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;frame_name&quot;\\n    value {\\n      s: &quot;rnn/while/while_context&quot;\\n    }\\n  }\\n  attr {\\n    key: &quot;is_constant&quot;\\n    value {\\n      b: false\\n    }\\n  }\\n  attr {\\n    key: &quot;parallel_iterations&quot;\\n    value {\\n      i: 32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Merge&quot;\\n  op: &quot;Merge&quot;\\n  input: &quot;rnn/while/Enter&quot;\\n  input: &quot;rnn/while/NextIteration&quot;\\n  attr {\\n    key: &quot;N&quot;\\n    value {\\n      i: 2\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Merge_1&quot;\\n  op: &quot;Merge&quot;\\n  input: &quot;rnn/while/Enter_1&quot;\\n  input: &quot;rnn/while/NextIteration_1&quot;\\n  attr {\\n    key: &quot;N&quot;\\n    value {\\n      i: 2\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Merge_2&quot;\\n  op: &quot;Merge&quot;\\n  input: &quot;rnn/while/Enter_2&quot;\\n  input: &quot;rnn/while/NextIteration_2&quot;\\n  attr {\\n    key: &quot;N&quot;\\n    value {\\n      i: 2\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Merge_3&quot;\\n  op: &quot;Merge&quot;\\n  input: &quot;rnn/while/Enter_3&quot;\\n  input: &quot;rnn/while/NextIteration_3&quot;\\n  attr {\\n    key: &quot;N&quot;\\n    value {\\n      i: 2\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Less&quot;\\n  op: &quot;Less&quot;\\n  input: &quot;rnn/while/Merge&quot;\\n  input: &quot;rnn/while/Less/Enter&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Less/Enter&quot;\\n  op: &quot;Enter&quot;\\n  input: &quot;rnn/strided_slice_1&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;frame_name&quot;\\n    value {\\n      s: &quot;rnn/while/while_context&quot;\\n    }\\n  }\\n  attr {\\n    key: &quot;is_constant&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n  attr {\\n    key: &quot;parallel_iterations&quot;\\n    value {\\n      i: 32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Less_1&quot;\\n  op: &quot;Less&quot;\\n  input: &quot;rnn/while/Merge_1&quot;\\n  input: &quot;rnn/while/Less_1/Enter&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Less_1/Enter&quot;\\n  op: &quot;Enter&quot;\\n  input: &quot;rnn/Minimum&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;frame_name&quot;\\n    value {\\n      s: &quot;rnn/while/while_context&quot;\\n    }\\n  }\\n  attr {\\n    key: &quot;is_constant&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n  attr {\\n    key: &quot;parallel_iterations&quot;\\n    value {\\n      i: 32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/LogicalAnd&quot;\\n  op: &quot;LogicalAnd&quot;\\n  input: &quot;rnn/while/Less&quot;\\n  input: &quot;rnn/while/Less_1&quot;\\n}\\nnode {\\n  name: &quot;rnn/while/LoopCond&quot;\\n  op: &quot;LoopCond&quot;\\n  input: &quot;rnn/while/LogicalAnd&quot;\\n}\\nnode {\\n  name: &quot;rnn/while/Switch&quot;\\n  op: &quot;Switch&quot;\\n  input: &quot;rnn/while/Merge&quot;\\n  input: &quot;rnn/while/LoopCond&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/while/Merge&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Switch_1&quot;\\n  op: &quot;Switch&quot;\\n  input: &quot;rnn/while/Merge_1&quot;\\n  input: &quot;rnn/while/LoopCond&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/while/Merge_1&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Switch_2&quot;\\n  op: &quot;Switch&quot;\\n  input: &quot;rnn/while/Merge_2&quot;\\n  input: &quot;rnn/while/LoopCond&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/while/Merge_2&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Switch_3&quot;\\n  op: &quot;Switch&quot;\\n  input: &quot;rnn/while/Merge_3&quot;\\n  input: &quot;rnn/while/LoopCond&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/while/Merge_3&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Identity&quot;\\n  op: &quot;Identity&quot;\\n  input: &quot;rnn/while/Switch:1&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Identity_1&quot;\\n  op: &quot;Identity&quot;\\n  input: &quot;rnn/while/Switch_1:1&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Identity_2&quot;\\n  op: &quot;Identity&quot;\\n  input: &quot;rnn/while/Switch_2:1&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Identity_3&quot;\\n  op: &quot;Identity&quot;\\n  input: &quot;rnn/while/Switch_3:1&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/add/y&quot;\\n  op: &quot;Const&quot;\\n  input: &quot;^rnn/while/Identity&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/add&quot;\\n  op: &quot;Add&quot;\\n  input: &quot;rnn/while/Identity&quot;\\n  input: &quot;rnn/while/add/y&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/TensorArrayReadV3&quot;\\n  op: &quot;TensorArrayReadV3&quot;\\n  input: &quot;rnn/while/TensorArrayReadV3/Enter&quot;\\n  input: &quot;rnn/while/Identity_1&quot;\\n  input: &quot;rnn/while/TensorArrayReadV3/Enter_1&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/TensorArrayReadV3/Enter&quot;\\n  op: &quot;Enter&quot;\\n  input: &quot;rnn/TensorArray_1&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_RESOURCE\\n    }\\n  }\\n  attr {\\n    key: &quot;frame_name&quot;\\n    value {\\n      s: &quot;rnn/while/while_context&quot;\\n    }\\n  }\\n  attr {\\n    key: &quot;is_constant&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n  attr {\\n    key: &quot;parallel_iterations&quot;\\n    value {\\n      i: 32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/TensorArrayReadV3/Enter_1&quot;\\n  op: &quot;Enter&quot;\\n  input: &quot;rnn/TensorArrayUnstack/TensorArrayScatter/TensorArrayScatterV3&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;frame_name&quot;\\n    value {\\n      s: &quot;rnn/while/while_context&quot;\\n    }\\n  }\\n  attr {\\n    key: &quot;is_constant&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n  attr {\\n    key: &quot;parallel_iterations&quot;\\n    value {\\n      i: 32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/shape&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 2\\n          }\\n        }\\n        tensor_content: &quot;\\\\010\\\\000\\\\000\\\\000\\\\005\\\\000\\\\000\\\\000&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/min&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_FLOAT\\n        tensor_shape {\\n        }\\n        float_val: -0.6793662309646606\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/max&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_FLOAT\\n        tensor_shape {\\n        }\\n        float_val: 0.6793662309646606\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/RandomUniform&quot;\\n  op: &quot;RandomUniform&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/shape&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;seed&quot;\\n    value {\\n      i: 42\\n    }\\n  }\\n  attr {\\n    key: &quot;seed2&quot;\\n    value {\\n      i: 87\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/sub&quot;\\n  op: &quot;Sub&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/max&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/min&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/mul&quot;\\n  op: &quot;Mul&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/RandomUniform&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/sub&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform&quot;\\n  op: &quot;Add&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/mul&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/min&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel&quot;\\n  op: &quot;VariableV2&quot;\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;container&quot;\\n    value {\\n      s: &quot;&quot;\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;shape&quot;\\n    value {\\n      shape {\\n        dim {\\n          size: 8\\n        }\\n        dim {\\n          size: 5\\n        }\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;shared_name&quot;\\n    value {\\n      s: &quot;&quot;\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/Assign&quot;\\n  op: &quot;Assign&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;use_locking&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n  attr {\\n    key: &quot;validate_shape&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/kernel/read&quot;\\n  op: &quot;Identity&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/bias/Initializer/zeros&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/bias&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_FLOAT\\n        tensor_shape {\\n          dim {\\n            size: 5\\n          }\\n        }\\n        float_val: 0.0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/bias&quot;\\n  op: &quot;VariableV2&quot;\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/bias&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;container&quot;\\n    value {\\n      s: &quot;&quot;\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;shape&quot;\\n    value {\\n      shape {\\n        dim {\\n          size: 5\\n        }\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;shared_name&quot;\\n    value {\\n      s: &quot;&quot;\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/bias/Assign&quot;\\n  op: &quot;Assign&quot;\\n  input: &quot;rnn/basic_rnn_cell/bias&quot;\\n  input: &quot;rnn/basic_rnn_cell/bias/Initializer/zeros&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/basic_rnn_cell/bias&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;use_locking&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n  attr {\\n    key: &quot;validate_shape&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/basic_rnn_cell/bias/read&quot;\\n  op: &quot;Identity&quot;\\n  input: &quot;rnn/basic_rnn_cell/bias&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/basic_rnn_cell/concat/axis&quot;\\n  op: &quot;Const&quot;\\n  input: &quot;^rnn/while/Identity&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/basic_rnn_cell/concat&quot;\\n  op: &quot;ConcatV2&quot;\\n  input: &quot;rnn/while/TensorArrayReadV3&quot;\\n  input: &quot;rnn/while/Identity_3&quot;\\n  input: &quot;rnn/while/basic_rnn_cell/concat/axis&quot;\\n  attr {\\n    key: &quot;N&quot;\\n    value {\\n      i: 2\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;Tidx&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/basic_rnn_cell/MatMul&quot;\\n  op: &quot;MatMul&quot;\\n  input: &quot;rnn/while/basic_rnn_cell/concat&quot;\\n  input: &quot;rnn/while/basic_rnn_cell/MatMul/Enter&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;transpose_a&quot;\\n    value {\\n      b: false\\n    }\\n  }\\n  attr {\\n    key: &quot;transpose_b&quot;\\n    value {\\n      b: false\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/basic_rnn_cell/MatMul/Enter&quot;\\n  op: &quot;Enter&quot;\\n  input: &quot;rnn/basic_rnn_cell/kernel/read&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;frame_name&quot;\\n    value {\\n      s: &quot;rnn/while/while_context&quot;\\n    }\\n  }\\n  attr {\\n    key: &quot;is_constant&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n  attr {\\n    key: &quot;parallel_iterations&quot;\\n    value {\\n      i: 32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/basic_rnn_cell/BiasAdd&quot;\\n  op: &quot;BiasAdd&quot;\\n  input: &quot;rnn/while/basic_rnn_cell/MatMul&quot;\\n  input: &quot;rnn/while/basic_rnn_cell/BiasAdd/Enter&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;data_format&quot;\\n    value {\\n      s: &quot;NHWC&quot;\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/basic_rnn_cell/BiasAdd/Enter&quot;\\n  op: &quot;Enter&quot;\\n  input: &quot;rnn/basic_rnn_cell/bias/read&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;frame_name&quot;\\n    value {\\n      s: &quot;rnn/while/while_context&quot;\\n    }\\n  }\\n  attr {\\n    key: &quot;is_constant&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n  attr {\\n    key: &quot;parallel_iterations&quot;\\n    value {\\n      i: 32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/basic_rnn_cell/Tanh&quot;\\n  op: &quot;Tanh&quot;\\n  input: &quot;rnn/while/basic_rnn_cell/BiasAdd&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/TensorArrayWrite/TensorArrayWriteV3&quot;\\n  op: &quot;TensorArrayWriteV3&quot;\\n  input: &quot;rnn/while/TensorArrayWrite/TensorArrayWriteV3/Enter&quot;\\n  input: &quot;rnn/while/Identity_1&quot;\\n  input: &quot;rnn/while/basic_rnn_cell/Tanh&quot;\\n  input: &quot;rnn/while/Identity_2&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/while/basic_rnn_cell/Tanh&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/TensorArrayWrite/TensorArrayWriteV3/Enter&quot;\\n  op: &quot;Enter&quot;\\n  input: &quot;rnn/TensorArray&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_RESOURCE\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/while/basic_rnn_cell/Tanh&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;frame_name&quot;\\n    value {\\n      s: &quot;rnn/while/while_context&quot;\\n    }\\n  }\\n  attr {\\n    key: &quot;is_constant&quot;\\n    value {\\n      b: true\\n    }\\n  }\\n  attr {\\n    key: &quot;parallel_iterations&quot;\\n    value {\\n      i: 32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/add_1/y&quot;\\n  op: &quot;Const&quot;\\n  input: &quot;^rnn/while/Identity&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/add_1&quot;\\n  op: &quot;Add&quot;\\n  input: &quot;rnn/while/Identity_1&quot;\\n  input: &quot;rnn/while/add_1/y&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/NextIteration&quot;\\n  op: &quot;NextIteration&quot;\\n  input: &quot;rnn/while/add&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/NextIteration_1&quot;\\n  op: &quot;NextIteration&quot;\\n  input: &quot;rnn/while/add_1&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/NextIteration_2&quot;\\n  op: &quot;NextIteration&quot;\\n  input: &quot;rnn/while/TensorArrayWrite/TensorArrayWriteV3&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/NextIteration_3&quot;\\n  op: &quot;NextIteration&quot;\\n  input: &quot;rnn/while/basic_rnn_cell/Tanh&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Exit&quot;\\n  op: &quot;Exit&quot;\\n  input: &quot;rnn/while/Switch&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Exit_1&quot;\\n  op: &quot;Exit&quot;\\n  input: &quot;rnn/while/Switch_1&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Exit_2&quot;\\n  op: &quot;Exit&quot;\\n  input: &quot;rnn/while/Switch_2&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/while/Exit_3&quot;\\n  op: &quot;Exit&quot;\\n  input: &quot;rnn/while/Switch_3&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/TensorArrayStack/TensorArraySizeV3&quot;\\n  op: &quot;TensorArraySizeV3&quot;\\n  input: &quot;rnn/TensorArray&quot;\\n  input: &quot;rnn/while/Exit_2&quot;\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/TensorArray&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/TensorArrayStack/range/start&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/TensorArray&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/TensorArrayStack/range/delta&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/TensorArray&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/TensorArrayStack/range&quot;\\n  op: &quot;Range&quot;\\n  input: &quot;rnn/TensorArrayStack/range/start&quot;\\n  input: &quot;rnn/TensorArrayStack/TensorArraySizeV3&quot;\\n  input: &quot;rnn/TensorArrayStack/range/delta&quot;\\n  attr {\\n    key: &quot;Tidx&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/TensorArray&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/TensorArrayStack/TensorArrayGatherV3&quot;\\n  op: &quot;TensorArrayGatherV3&quot;\\n  input: &quot;rnn/TensorArray&quot;\\n  input: &quot;rnn/TensorArrayStack/range&quot;\\n  input: &quot;rnn/while/Exit_2&quot;\\n  attr {\\n    key: &quot;_class&quot;\\n    value {\\n      list {\\n        s: &quot;loc:@rnn/TensorArray&quot;\\n      }\\n    }\\n  }\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;element_shape&quot;\\n    value {\\n      shape {\\n        dim {\\n          size: -1\\n        }\\n        dim {\\n          size: 5\\n        }\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/Const_1&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 1\\n          }\\n        }\\n        int_val: 5\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/Rank_1&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 3\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/range_1/start&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 2\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/range_1/delta&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 1\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/range_1&quot;\\n  op: &quot;Range&quot;\\n  input: &quot;rnn/range_1/start&quot;\\n  input: &quot;rnn/Rank_1&quot;\\n  input: &quot;rnn/range_1/delta&quot;\\n  attr {\\n    key: &quot;Tidx&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/concat_2/values_0&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n          dim {\\n            size: 2\\n          }\\n        }\\n        tensor_content: &quot;\\\\001\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000&quot;\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/concat_2/axis&quot;\\n  op: &quot;Const&quot;\\n  attr {\\n    key: &quot;dtype&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;value&quot;\\n    value {\\n      tensor {\\n        dtype: DT_INT32\\n        tensor_shape {\\n        }\\n        int_val: 0\\n      }\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/concat_2&quot;\\n  op: &quot;ConcatV2&quot;\\n  input: &quot;rnn/concat_2/values_0&quot;\\n  input: &quot;rnn/range_1&quot;\\n  input: &quot;rnn/concat_2/axis&quot;\\n  attr {\\n    key: &quot;N&quot;\\n    value {\\n      i: 2\\n    }\\n  }\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n  attr {\\n    key: &quot;Tidx&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;rnn/transpose_1&quot;\\n  op: &quot;Transpose&quot;\\n  input: &quot;rnn/TensorArrayStack/TensorArrayGatherV3&quot;\\n  input: &quot;rnn/concat_2&quot;\\n  attr {\\n    key: &quot;T&quot;\\n    value {\\n      type: DT_FLOAT\\n    }\\n  }\\n  attr {\\n    key: &quot;Tperm&quot;\\n    value {\\n      type: DT_INT32\\n    }\\n  }\\n}\\nnode {\\n  name: &quot;init&quot;\\n  op: &quot;NoOp&quot;\\n  input: &quot;^rnn/basic_rnn_cell/bias/Assign&quot;\\n  input: &quot;^rnn/basic_rnn_cell/kernel/Assign&quot;\\n}\\n';\n",
       "          }\n",
       "        </script>\n",
       "        <link rel=&quot;import&quot; href=&quot;https://tensorboard.appspot.com/tf-graph-basic.build.html&quot; onload=load()>\n",
       "        <div style=&quot;height:600px&quot;>\n",
       "          <tf-graph-basic id=&quot;graph0.3745401188473625&quot;></tf-graph-basic>\n",
       "        </div>\n",
       "    \"></iframe>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "show_graph(tf.get_default_graph())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Setting the sequence lengths"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "n_steps = 2\n",
    "n_inputs = 3\n",
    "n_neurons = 5\n",
    "\n",
    "reset_graph()\n",
    "\n",
    "X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
    "basic_cell = tf.contrib.rnn.BasicRNNCell(num_units=n_neurons)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "seq_length = tf.placeholder(tf.int32, [None])\n",
    "outputs, states = tf.nn.dynamic_rnn(basic_cell, X, dtype=tf.float32,\n",
    "                                    sequence_length=seq_length)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "init = tf.global_variables_initializer()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_batch = np.array([\n",
    "        # step 0     step 1\n",
    "        [[0, 1, 2], [9, 8, 7]], # instance 1\n",
    "        [[3, 4, 5], [0, 0, 0]], # instance 2 (padded with zero vectors)\n",
    "        [[6, 7, 8], [6, 5, 4]], # instance 3\n",
    "        [[9, 0, 1], [3, 2, 1]], # instance 4\n",
    "    ])\n",
    "seq_length_batch = np.array([2, 1, 2, 2])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "with tf.Session() as sess:\n",
    "    init.run()\n",
    "    outputs_val, states_val = sess.run(\n",
    "        [outputs, states], feed_dict={X: X_batch, seq_length: seq_length_batch})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[[-0.9123188   0.16516446  0.5548655  -0.39159346  0.20846416]\n",
      "  [-1.          0.956726    0.99831694  0.99970174  0.96518576]]\n",
      "\n",
      " [[-0.9998612   0.6702289   0.9723653   0.6631046   0.74457586]\n",
      "  [ 0.          0.          0.          0.          0.        ]]\n",
      "\n",
      " [[-0.99999976  0.8967997   0.9986295   0.9647514   0.93662   ]\n",
      "  [-0.9999526   0.9681953   0.96002865  0.98706263  0.85459226]]\n",
      "\n",
      " [[-0.96435434  0.99501586 -0.36150697  0.9983378   0.999497  ]\n",
      "  [-0.9613586   0.9568762   0.7132288   0.97729224 -0.0958299 ]]]\n"
     ]
    }
   ],
   "source": [
    "print(outputs_val)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[-1.          0.956726    0.99831694  0.99970174  0.96518576]\n",
      " [-0.9998612   0.6702289   0.9723653   0.6631046   0.74457586]\n",
      " [-0.9999526   0.9681953   0.96002865  0.98706263  0.85459226]\n",
      " [-0.9613586   0.9568762   0.7132288   0.97729224 -0.0958299 ]]\n"
     ]
    }
   ],
   "source": [
    "print(states_val)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Training a sequence classifier"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note: the book uses `tensorflow.contrib.layers.fully_connected()` rather than `tf.layers.dense()` (which did not exist when this chapter was written). It is now preferable to use `tf.layers.dense()`, because anything in the contrib module may change or be deleted without notice. The `dense()` function is almost identical to the `fully_connected()` function. The main differences relevant to this chapter are:\n",
    "* several parameters are renamed: `scope` becomes `name`, `activation_fn` becomes `activation` (and similarly the `_fn` suffix is removed from other parameters such as `normalizer_fn`), `weights_initializer` becomes `kernel_initializer`, etc.\n",
    "* the default `activation` is now `None` rather than `tf.nn.relu`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "reset_graph()\n",
    "\n",
    "n_steps = 28\n",
    "n_inputs = 28\n",
    "n_neurons = 150\n",
    "n_outputs = 10\n",
    "\n",
    "learning_rate = 0.001\n",
    "\n",
    "X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
    "y = tf.placeholder(tf.int32, [None])\n",
    "\n",
    "basic_cell = tf.contrib.rnn.BasicRNNCell(num_units=n_neurons)\n",
    "outputs, states = tf.nn.dynamic_rnn(basic_cell, X, dtype=tf.float32)\n",
    "\n",
    "logits = tf.layers.dense(states, n_outputs)\n",
    "xentropy = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=y,\n",
    "                                                          logits=logits)\n",
    "loss = tf.reduce_mean(xentropy)\n",
    "optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)\n",
    "training_op = optimizer.minimize(loss)\n",
    "correct = tf.nn.in_top_k(logits, y, 1)\n",
    "accuracy = tf.reduce_mean(tf.cast(correct, tf.float32))\n",
    "\n",
    "init = tf.global_variables_initializer()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From <ipython-input-35-9aff0e2313ad>:2: read_data_sets (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use alternatives such as official/mnist/dataset.py from tensorflow/models.\n",
      "WARNING:tensorflow:From /Users/ageron/.virtualenvs/ml/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py:260: maybe_download (from tensorflow.contrib.learn.python.learn.datasets.base) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please write your own downloading logic.\n",
      "WARNING:tensorflow:From /Users/ageron/.virtualenvs/ml/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py:262: extract_images (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use tf.data to implement this functionality.\n",
      "Extracting /tmp/data/train-images-idx3-ubyte.gz\n",
      "WARNING:tensorflow:From /Users/ageron/.virtualenvs/ml/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py:267: extract_labels (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use tf.data to implement this functionality.\n",
      "Extracting /tmp/data/train-labels-idx1-ubyte.gz\n",
      "Extracting /tmp/data/t10k-images-idx3-ubyte.gz\n",
      "Extracting /tmp/data/t10k-labels-idx1-ubyte.gz\n",
      "WARNING:tensorflow:From /Users/ageron/.virtualenvs/ml/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py:290: DataSet.__init__ (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use alternatives such as official/mnist/dataset.py from tensorflow/models.\n"
     ]
    }
   ],
   "source": [
    "from tensorflow.examples.tutorials.mnist import input_data\n",
    "mnist = input_data.read_data_sets(\"/tmp/data/\")\n",
    "X_test = mnist.test.images.reshape((-1, n_steps, n_inputs))\n",
    "y_test = mnist.test.labels"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 Train accuracy: 0.93333334 Test accuracy: 0.9311\n",
      "1 Train accuracy: 0.96666664 Test accuracy: 0.9522\n",
      "2 Train accuracy: 0.97333336 Test accuracy: 0.9586\n",
      "3 Train accuracy: 0.96666664 Test accuracy: 0.9607\n",
      "4 Train accuracy: 0.97333336 Test accuracy: 0.9673\n",
      "5 Train accuracy: 0.98 Test accuracy: 0.9669\n",
      "6 Train accuracy: 0.97333336 Test accuracy: 0.9693\n",
      "7 Train accuracy: 0.96666664 Test accuracy: 0.968\n",
      "8 Train accuracy: 0.9533333 Test accuracy: 0.9723\n",
      "9 Train accuracy: 0.97333336 Test accuracy: 0.9683\n",
      "10 Train accuracy: 0.9866667 Test accuracy: 0.9734\n",
      "11 Train accuracy: 0.96666664 Test accuracy: 0.969\n",
      "12 Train accuracy: 0.9866667 Test accuracy: 0.9726\n",
      "13 Train accuracy: 0.9866667 Test accuracy: 0.9774\n",
      "14 Train accuracy: 0.98 Test accuracy: 0.9705\n",
      "15 Train accuracy: 0.9866667 Test accuracy: 0.976\n",
      "16 Train accuracy: 0.9866667 Test accuracy: 0.9739\n",
      "17 Train accuracy: 0.9866667 Test accuracy: 0.9709\n",
      "18 Train accuracy: 0.98 Test accuracy: 0.9736\n",
      "19 Train accuracy: 0.9866667 Test accuracy: 0.9775\n",
      "20 Train accuracy: 0.96666664 Test accuracy: 0.9763\n",
      "21 Train accuracy: 0.9866667 Test accuracy: 0.9792\n",
      "22 Train accuracy: 0.98 Test accuracy: 0.9774\n",
      "23 Train accuracy: 0.9866667 Test accuracy: 0.9735\n",
      "24 Train accuracy: 1.0 Test accuracy: 0.9785\n",
      "25 Train accuracy: 0.99333334 Test accuracy: 0.9756\n",
      "26 Train accuracy: 0.9866667 Test accuracy: 0.9779\n",
      "27 Train accuracy: 1.0 Test accuracy: 0.978\n",
      "28 Train accuracy: 0.98 Test accuracy: 0.9788\n",
      "29 Train accuracy: 0.9866667 Test accuracy: 0.9753\n",
      "30 Train accuracy: 0.9866667 Test accuracy: 0.9776\n",
      "31 Train accuracy: 1.0 Test accuracy: 0.9794\n",
      "32 Train accuracy: 0.99333334 Test accuracy: 0.9766\n",
      "33 Train accuracy: 0.99333334 Test accuracy: 0.9753\n",
      "34 Train accuracy: 0.99333334 Test accuracy: 0.9773\n",
      "35 Train accuracy: 1.0 Test accuracy: 0.9796\n",
      "36 Train accuracy: 0.99333334 Test accuracy: 0.9787\n",
      "37 Train accuracy: 1.0 Test accuracy: 0.9734\n",
      "38 Train accuracy: 0.9866667 Test accuracy: 0.9779\n",
      "39 Train accuracy: 1.0 Test accuracy: 0.9781\n",
      "40 Train accuracy: 0.99333334 Test accuracy: 0.9816\n",
      "41 Train accuracy: 0.9866667 Test accuracy: 0.9786\n",
      "42 Train accuracy: 0.9866667 Test accuracy: 0.9763\n",
      "43 Train accuracy: 0.99333334 Test accuracy: 0.9751\n",
      "44 Train accuracy: 0.9866667 Test accuracy: 0.9746\n",
      "45 Train accuracy: 0.99333334 Test accuracy: 0.9803\n",
      "46 Train accuracy: 0.99333334 Test accuracy: 0.9813\n",
      "47 Train accuracy: 0.9866667 Test accuracy: 0.9755\n",
      "48 Train accuracy: 0.9866667 Test accuracy: 0.9765\n",
      "49 Train accuracy: 1.0 Test accuracy: 0.9816\n",
      "50 Train accuracy: 0.98 Test accuracy: 0.9658\n",
      "51 Train accuracy: 0.99333334 Test accuracy: 0.9802\n",
      "52 Train accuracy: 0.99333334 Test accuracy: 0.9819\n",
      "53 Train accuracy: 0.99333334 Test accuracy: 0.977\n",
      "54 Train accuracy: 1.0 Test accuracy: 0.9729\n",
      "55 Train accuracy: 0.97333336 Test accuracy: 0.979\n",
      "56 Train accuracy: 1.0 Test accuracy: 0.9803\n",
      "57 Train accuracy: 0.9866667 Test accuracy: 0.9783\n",
      "58 Train accuracy: 0.9866667 Test accuracy: 0.9781\n",
      "59 Train accuracy: 1.0 Test accuracy: 0.9792\n",
      "60 Train accuracy: 1.0 Test accuracy: 0.9803\n",
      "61 Train accuracy: 0.99333334 Test accuracy: 0.9793\n",
      "62 Train accuracy: 0.9866667 Test accuracy: 0.9766\n",
      "63 Train accuracy: 0.99333334 Test accuracy: 0.9795\n",
      "64 Train accuracy: 0.99333334 Test accuracy: 0.9732\n",
      "65 Train accuracy: 0.9866667 Test accuracy: 0.9806\n",
      "66 Train accuracy: 1.0 Test accuracy: 0.9776\n",
      "67 Train accuracy: 0.99333334 Test accuracy: 0.9784\n",
      "68 Train accuracy: 1.0 Test accuracy: 0.975\n",
      "69 Train accuracy: 0.9866667 Test accuracy: 0.9776\n",
      "70 Train accuracy: 0.9866667 Test accuracy: 0.9778\n",
      "71 Train accuracy: 0.99333334 Test accuracy: 0.9788\n",
      "72 Train accuracy: 1.0 Test accuracy: 0.9795\n",
      "73 Train accuracy: 1.0 Test accuracy: 0.979\n",
      "74 Train accuracy: 0.99333334 Test accuracy: 0.9779\n",
      "75 Train accuracy: 0.99333334 Test accuracy: 0.9749\n",
      "76 Train accuracy: 0.98 Test accuracy: 0.9773\n",
      "77 Train accuracy: 1.0 Test accuracy: 0.9769\n",
      "78 Train accuracy: 0.99333334 Test accuracy: 0.9819\n",
      "79 Train accuracy: 0.9866667 Test accuracy: 0.977\n",
      "80 Train accuracy: 0.9866667 Test accuracy: 0.9805\n",
      "81 Train accuracy: 0.99333334 Test accuracy: 0.9746\n",
      "82 Train accuracy: 0.99333334 Test accuracy: 0.9795\n",
      "83 Train accuracy: 1.0 Test accuracy: 0.9801\n",
      "84 Train accuracy: 0.99333334 Test accuracy: 0.9793\n",
      "85 Train accuracy: 0.99333334 Test accuracy: 0.9773\n",
      "86 Train accuracy: 1.0 Test accuracy: 0.9754\n",
      "87 Train accuracy: 0.96 Test accuracy: 0.9702\n",
      "88 Train accuracy: 0.99333334 Test accuracy: 0.9776\n",
      "89 Train accuracy: 1.0 Test accuracy: 0.9816\n",
      "90 Train accuracy: 0.9866667 Test accuracy: 0.9786\n",
      "91 Train accuracy: 1.0 Test accuracy: 0.9779\n",
      "92 Train accuracy: 0.99333334 Test accuracy: 0.9793\n",
      "93 Train accuracy: 1.0 Test accuracy: 0.9803\n",
      "94 Train accuracy: 1.0 Test accuracy: 0.9779\n",
      "95 Train accuracy: 0.99333334 Test accuracy: 0.9792\n",
      "96 Train accuracy: 1.0 Test accuracy: 0.9817\n",
      "97 Train accuracy: 0.9866667 Test accuracy: 0.9794\n",
      "98 Train accuracy: 0.99333334 Test accuracy: 0.9787\n",
      "99 Train accuracy: 0.99333334 Test accuracy: 0.979\n"
     ]
    }
   ],
   "source": [
    "n_epochs = 100\n",
    "batch_size = 150\n",
    "\n",
    "with tf.Session() as sess:\n",
    "    init.run()\n",
    "    for epoch in range(n_epochs):\n",
    "        for iteration in range(mnist.train.num_examples // batch_size):\n",
    "            X_batch, y_batch = mnist.train.next_batch(batch_size)\n",
    "            X_batch = X_batch.reshape((-1, n_steps, n_inputs))\n",
    "            sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
    "        acc_train = accuracy.eval(feed_dict={X: X_batch, y: y_batch})\n",
    "        acc_test = accuracy.eval(feed_dict={X: X_test, y: y_test})\n",
    "        print(epoch, \"Train accuracy:\", acc_train, \"Test accuracy:\", acc_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Multi-layer RNN"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "reset_graph()\n",
    "\n",
    "n_steps = 28\n",
    "n_inputs = 28\n",
    "n_outputs = 10\n",
    "\n",
    "learning_rate = 0.001\n",
    "\n",
    "X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
    "y = tf.placeholder(tf.int32, [None])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "n_neurons = 100\n",
    "n_layers = 3\n",
    "\n",
    "layers = [tf.contrib.rnn.BasicRNNCell(num_units=n_neurons,\n",
    "                                      activation=tf.nn.relu)\n",
    "          for layer in range(n_layers)]\n",
    "multi_layer_cell = tf.contrib.rnn.MultiRNNCell(layers)\n",
    "outputs, states = tf.nn.dynamic_rnn(multi_layer_cell, X, dtype=tf.float32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "states_concat = tf.concat(axis=1, values=states)\n",
    "logits = tf.layers.dense(states_concat, n_outputs)\n",
    "xentropy = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=y, logits=logits)\n",
    "loss = tf.reduce_mean(xentropy)\n",
    "optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)\n",
    "training_op = optimizer.minimize(loss)\n",
    "correct = tf.nn.in_top_k(logits, y, 1)\n",
    "accuracy = tf.reduce_mean(tf.cast(correct, tf.float32))\n",
    "\n",
    "init = tf.global_variables_initializer()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 Train accuracy: 0.9266667 Test accuracy: 0.9456\n",
      "1 Train accuracy: 0.9866667 Test accuracy: 0.9647\n",
      "2 Train accuracy: 0.94666666 Test accuracy: 0.9663\n",
      "3 Train accuracy: 0.98 Test accuracy: 0.9757\n",
      "4 Train accuracy: 0.98 Test accuracy: 0.9724\n",
      "5 Train accuracy: 0.9866667 Test accuracy: 0.9785\n",
      "6 Train accuracy: 0.9866667 Test accuracy: 0.9692\n",
      "7 Train accuracy: 1.0 Test accuracy: 0.981\n",
      "8 Train accuracy: 0.99333334 Test accuracy: 0.9788\n",
      "9 Train accuracy: 0.99333334 Test accuracy: 0.9809\n"
     ]
    }
   ],
   "source": [
    "n_epochs = 10\n",
    "batch_size = 150\n",
    "\n",
    "with tf.Session() as sess:\n",
    "    init.run()\n",
    "    for epoch in range(n_epochs):\n",
    "        for iteration in range(mnist.train.num_examples // batch_size):\n",
    "            X_batch, y_batch = mnist.train.next_batch(batch_size)\n",
    "            X_batch = X_batch.reshape((-1, n_steps, n_inputs))\n",
    "            sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
    "        acc_train = accuracy.eval(feed_dict={X: X_batch, y: y_batch})\n",
    "        acc_test = accuracy.eval(feed_dict={X: X_test, y: y_test})\n",
    "        print(epoch, \"Train accuracy:\", acc_train, \"Test accuracy:\", acc_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Time series"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "t_min, t_max = 0, 30\n",
    "resolution = 0.1\n",
    "\n",
    "def time_series(t):\n",
    "    return t * np.sin(t) / 3 + 2 * np.sin(t*5)\n",
    "\n",
    "def next_batch(batch_size, n_steps):\n",
    "    t0 = np.random.rand(batch_size, 1) * (t_max - t_min - n_steps * resolution)\n",
    "    Ts = t0 + np.arange(0., n_steps + 1) * resolution\n",
    "    ys = time_series(Ts)\n",
    "    return ys[:, :-1].reshape(-1, n_steps, 1), ys[:, 1:].reshape(-1, n_steps, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Saving figure time_series_plot\n"
     ]
    },
    {
     "data": {
      "image/png": "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JkesTz/9ND169KBz587ccsstlJaW1u3z8ccfM27cOKKjo+nUqRNjxoxhx44dZGVlccstt1BSUlJ37hYvXgzAiy++yOjRo4mJiSE5OZlZs2Zx5MiRusfMyspCRPjggw8YO3YsNpuNzMxMtmzZ0iDeTZs2MWnSJKKioujUqROTJk0iLy8PAGMMv/nNb0hPTycyMpKhQ4e2uOVHKaWUUqo1aALhhIj3lpZYuXIlaWlpDB06lJtuuon/+7//c9tysHDhQn7wgx9w5ZVXcvToUY4ePcr48ePrtj/wwAPMnz+fXbt2cc0111BeXs5FF13Ev/71L3bu3MmCBQu4/fbb+eCDD9zG9dJLLxESEsLGjRtZunQpv//973nttdfc3ud3v/sdQ4cOZcuWLSxatIif/exnfPrppwDU1tZy7bXXEhISwqZNm3j++ed5+OGHqaioaMHZsnzyySfs2LGD999/n9dee41Vq1bx9NNPA1BdXc2MGTO45JJL2LZtG5999hl33303wcHBjB8/nt///vfYbLa6c7dw4UIAKisrefjhh9m2bRv/+te/KCgo4Prrr2/y3A888AD//d//zZYtW0hISGD27NkYYwDYtm0bV1xxBX379mXDhg1s2rSJ6667jurqagAeeughnnvuOZ555hl27drFAw88wO23387q1atbfA6UUq0nOxvmz4eUFFi1yvo5f761Ximl/JYxxu+XUaNGGVd27drVZJ01J6h3lpa4/PLLzW9/+1tjjDG1tbUmLS3NvP76627vM2fOHDNt2rQG63JycgxgnnjiiWaf87rrrjNz5851+XiXX365GTduXIP7XHnllQ3uc/nll5s777yz7nZaWpr54Q9/2OA+ffv2NY888ogxxpi1a9ea4OBgc/jw4brtGzZsMIBZvny5y1h/9atfmcGDBzeINSUlxVRXV9et+6//+i8zefJkY4wxJ0+eNIDJyspy+njLly83UVFRLp/PYffu3QYw33zzjTHGmHXr1hnArF27tm6f9evXN9jnhhtuaHLeHIqLi01ERIT5+OOPG6xfsGCBmTp1arPxNMfZ34BS9QGbjQ98lnuyuPu8b23vvGOMzWZMaKgxN95orZs927pts1nblVKqI/H0815bIDqo/fv3s379em644QYARITZs2c3243JnczMzAa3a2pqePTRRxk2bBgJCQlER0fzxhtvcOjQ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\n",
      "text/plain": [
       "<Figure size 792x288 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "t = np.linspace(t_min, t_max, int((t_max - t_min) / resolution))\n",
    "\n",
    "n_steps = 20\n",
    "t_instance = np.linspace(12.2, 12.2 + resolution * (n_steps + 1), n_steps + 1)\n",
    "\n",
    "plt.figure(figsize=(11,4))\n",
    "plt.subplot(121)\n",
    "plt.title(\"A time series (generated)\", fontsize=14)\n",
    "plt.plot(t, time_series(t), label=r\"$t . \\sin(t) / 3 + 2 . \\sin(5t)$\")\n",
    "plt.plot(t_instance[:-1], time_series(t_instance[:-1]), \"b-\", linewidth=3, label=\"A training instance\")\n",
    "plt.legend(loc=\"lower left\", fontsize=14)\n",
    "plt.axis([0, 30, -17, 13])\n",
    "plt.xlabel(\"Time\")\n",
    "plt.ylabel(\"Value\")\n",
    "\n",
    "plt.subplot(122)\n",
    "plt.title(\"A training instance\", fontsize=14)\n",
    "plt.plot(t_instance[:-1], time_series(t_instance[:-1]), \"bo\", markersize=10, label=\"instance\")\n",
    "plt.plot(t_instance[1:], time_series(t_instance[1:]), \"w*\", markersize=10, label=\"target\")\n",
    "plt.legend(loc=\"upper left\")\n",
    "plt.xlabel(\"Time\")\n",
    "\n",
    "\n",
    "save_fig(\"time_series_plot\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_batch, y_batch = next_batch(1, n_steps)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1.38452097,  2.05081182],\n",
       "       [ 2.05081182,  2.29742291],\n",
       "       [ 2.29742291,  2.0465599 ],\n",
       "       [ 2.0465599 ,  1.34009916],\n",
       "       [ 1.34009916,  0.32948704],\n",
       "       [ 0.32948704, -0.76115235],\n",
       "       [-0.76115235, -1.68967022],\n",
       "       [-1.68967022, -2.25492776],\n",
       "       [-2.25492776, -2.34576159],\n",
       "       [-2.34576159, -1.96789418],\n",
       "       [-1.96789418, -1.24220428],\n",
       "       [-1.24220428, -0.37478448],\n",
       "       [-0.37478448,  0.39387907],\n",
       "       [ 0.39387907,  0.84815766],\n",
       "       [ 0.84815766,  0.85045064],\n",
       "       [ 0.85045064,  0.3752526 ],\n",
       "       [ 0.3752526 , -0.48422846],\n",
       "       [-0.48422846, -1.53852738],\n",
       "       [-1.53852738, -2.54795941],\n",
       "       [-2.54795941, -3.28097239]])"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.c_[X_batch[0], y_batch[0]]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Using an `OuputProjectionWrapper`"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's create the RNN. It will contain 100 recurrent neurons and we will unroll it over 20 time steps since each traiing instance will be 20 inputs long. Each input will contain only one feature (the value at that time). The targets are also sequences of 20 inputs, each containing a sigle value:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "reset_graph()\n",
    "\n",
    "n_steps = 20\n",
    "n_inputs = 1\n",
    "n_neurons = 100\n",
    "n_outputs = 1\n",
    "\n",
    "X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
    "y = tf.placeholder(tf.float32, [None, n_steps, n_outputs])\n",
    "\n",
    "cell = tf.contrib.rnn.BasicRNNCell(num_units=n_neurons, activation=tf.nn.relu)\n",
    "outputs, states = tf.nn.dynamic_rnn(cell, X, dtype=tf.float32)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "At each time step we now have an output vector of size 100. But what we actually want is a single output value at each time step. The simplest solution is to wrap the cell in an `OutputProjectionWrapper`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "reset_graph()\n",
    "\n",
    "n_steps = 20\n",
    "n_inputs = 1\n",
    "n_neurons = 100\n",
    "n_outputs = 1\n",
    "\n",
    "X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
    "y = tf.placeholder(tf.float32, [None, n_steps, n_outputs])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "cell = tf.contrib.rnn.OutputProjectionWrapper(\n",
    "    tf.contrib.rnn.BasicRNNCell(num_units=n_neurons, activation=tf.nn.relu),\n",
    "    output_size=n_outputs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "outputs, states = tf.nn.dynamic_rnn(cell, X, dtype=tf.float32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [],
   "source": [
    "learning_rate = 0.001\n",
    "\n",
    "loss = tf.reduce_mean(tf.square(outputs - y)) # MSE\n",
    "optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)\n",
    "training_op = optimizer.minimize(loss)\n",
    "\n",
    "init = tf.global_variables_initializer()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "saver = tf.train.Saver()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 \tMSE: 11.967254\n",
      "100 \tMSE: 0.525841\n",
      "200 \tMSE: 0.1495599\n",
      "300 \tMSE: 0.07279411\n",
      "400 \tMSE: 0.06158535\n",
      "500 \tMSE: 0.05938873\n",
      "600 \tMSE: 0.05470166\n",
      "700 \tMSE: 0.047849063\n",
      "800 \tMSE: 0.05107608\n",
      "900 \tMSE: 0.047209196\n",
      "1000 \tMSE: 0.047058314\n",
      "1100 \tMSE: 0.047831465\n",
      "1200 \tMSE: 0.04083041\n",
      "1300 \tMSE: 0.047086805\n",
      "1400 \tMSE: 0.041784383\n"
     ]
    }
   ],
   "source": [
    "n_iterations = 1500\n",
    "batch_size = 50\n",
    "\n",
    "with tf.Session() as sess:\n",
    "    init.run()\n",
    "    for iteration in range(n_iterations):\n",
    "        X_batch, y_batch = next_batch(batch_size, n_steps)\n",
    "        sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
    "        if iteration % 100 == 0:\n",
    "            mse = loss.eval(feed_dict={X: X_batch, y: y_batch})\n",
    "            print(iteration, \"\\tMSE:\", mse)\n",
    "    \n",
    "    saver.save(sess, \"./my_time_series_model\") # not shown in the book"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "INFO:tensorflow:Restoring parameters from ./my_time_series_model\n"
     ]
    }
   ],
   "source": [
    "with tf.Session() as sess:                          # not shown in the book\n",
    "    saver.restore(sess, \"./my_time_series_model\")   # not shown\n",
    "\n",
    "    X_new = time_series(np.array(t_instance[:-1].reshape(-1, n_steps, n_inputs)))\n",
    "    y_pred = sess.run(outputs, feed_dict={X: X_new})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[[-3.407753 ],\n",
       "        [-2.4575484],\n",
       "        [-1.1029298],\n",
       "        [ 0.7815629],\n",
       "        [ 2.2002175],\n",
       "        [ 3.126768 ],\n",
       "        [ 3.4037762],\n",
       "        [ 3.3489153],\n",
       "        [ 2.8798013],\n",
       "        [ 2.2659323],\n",
       "        [ 1.6447463],\n",
       "        [ 1.5210768],\n",
       "        [ 1.8972012],\n",
       "        [ 2.7159088],\n",
       "        [ 3.8894904],\n",
       "        [ 5.140914 ],\n",
       "        [ 6.142068 ],\n",
       "        [ 6.666671 ],\n",
       "        [ 6.6410103],\n",
       "        [ 6.0725527]]], dtype=float32)"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_pred"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Saving figure time_series_pred_plot\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.title(\"Testing the model\", fontsize=14)\n",
    "plt.plot(t_instance[:-1], time_series(t_instance[:-1]), \"bo\", markersize=10, label=\"instance\")\n",
    "plt.plot(t_instance[1:], time_series(t_instance[1:]), \"w*\", markersize=10, label=\"target\")\n",
    "plt.plot(t_instance[1:], y_pred[0,:,0], \"r.\", markersize=10, label=\"prediction\")\n",
    "plt.legend(loc=\"upper left\")\n",
    "plt.xlabel(\"Time\")\n",
    "\n",
    "save_fig(\"time_series_pred_plot\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Without using an `OutputProjectionWrapper`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [],
   "source": [
    "reset_graph()\n",
    "\n",
    "n_steps = 20\n",
    "n_inputs = 1\n",
    "n_neurons = 100\n",
    "\n",
    "X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
    "y = tf.placeholder(tf.float32, [None, n_steps, n_outputs])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "cell = tf.contrib.rnn.BasicRNNCell(num_units=n_neurons, activation=tf.nn.relu)\n",
    "rnn_outputs, states = tf.nn.dynamic_rnn(cell, X, dtype=tf.float32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [],
   "source": [
    "n_outputs = 1\n",
    "learning_rate = 0.001"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [],
   "source": [
    "stacked_rnn_outputs = tf.reshape(rnn_outputs, [-1, n_neurons])\n",
    "stacked_outputs = tf.layers.dense(stacked_rnn_outputs, n_outputs)\n",
    "outputs = tf.reshape(stacked_outputs, [-1, n_steps, n_outputs])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [],
   "source": [
    "loss = tf.reduce_mean(tf.square(outputs - y))\n",
    "optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)\n",
    "training_op = optimizer.minimize(loss)\n",
    "\n",
    "init = tf.global_variables_initializer()\n",
    "saver = tf.train.Saver()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 \tMSE: 13.907029\n",
      "100 \tMSE: 0.5056698\n",
      "200 \tMSE: 0.19735886\n",
      "300 \tMSE: 0.101214476\n",
      "400 \tMSE: 0.06850145\n",
      "500 \tMSE: 0.06291986\n",
      "600 \tMSE: 0.055129297\n",
      "700 \tMSE: 0.049436502\n",
      "800 \tMSE: 0.050434686\n",
      "900 \tMSE: 0.0482007\n",
      "1000 \tMSE: 0.04809868\n",
      "1100 \tMSE: 0.04982501\n",
      "1200 \tMSE: 0.041912545\n",
      "1300 \tMSE: 0.049292978\n",
      "1400 \tMSE: 0.043140374\n"
     ]
    }
   ],
   "source": [
    "n_iterations = 1500\n",
    "batch_size = 50\n",
    "\n",
    "with tf.Session() as sess:\n",
    "    init.run()\n",
    "    for iteration in range(n_iterations):\n",
    "        X_batch, y_batch = next_batch(batch_size, n_steps)\n",
    "        sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
    "        if iteration % 100 == 0:\n",
    "            mse = loss.eval(feed_dict={X: X_batch, y: y_batch})\n",
    "            print(iteration, \"\\tMSE:\", mse)\n",
    "    \n",
    "    X_new = time_series(np.array(t_instance[:-1].reshape(-1, n_steps, n_inputs)))\n",
    "    y_pred = sess.run(outputs, feed_dict={X: X_new})\n",
    "    \n",
    "    saver.save(sess, \"./my_time_series_model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[[-3.4332483],\n",
       "        [-2.4594698],\n",
       "        [-1.1081185],\n",
       "        [ 0.6882153],\n",
       "        [ 2.1105688],\n",
       "        [ 3.0585155],\n",
       "        [ 3.5144088],\n",
       "        [ 3.3531117],\n",
       "        [ 2.808016 ],\n",
       "        [ 2.1606152],\n",
       "        [ 1.662645 ],\n",
       "        [ 1.5578941],\n",
       "        [ 1.9173537],\n",
       "        [ 2.7210245],\n",
       "        [ 3.8667865],\n",
       "        [ 5.100083 ],\n",
       "        [ 6.099999 ],\n",
       "        [ 6.6480975],\n",
       "        [ 6.6147423],\n",
       "        [ 6.022089 ]]], dtype=float32)"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_pred"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXkAAAEeCAYAAABv8mXfAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Xt8lOWZ//HPlSELJkOKWuvPLRYo1XIyBInGiiiINkZjLSvWutKtYldb2u1WoSs/pdVVu65rxQPouvXYVWtXaLFCGbNFBbXWuFiC9cBSI2A9/qICkhMkw/X745mJIeRIZjKn7/v1el4z8xzv5yFc88z93Pd1m7sjIiLZKS/VBRARkeRRkBcRyWIK8iIiWUxBXkQkiynIi4hkMQV5EZEspiAvacnM/tXM1qXw+O+Z2fdSdfxEMLPVZnZnH9YfY2ZuZhOSWS4ZWAry0qXYf/jupvsTcIyuAst1QHl/99+L43/bzD5I9nFEUmVQqgsgae2wdu8rgbs6zGtK1oHdvR6oT9b+RXKF7uSlS+7+XnwCtnec5+47AMxshJktNbPtZvaRmT1mZqPi+zGzUWa20sy2mVmDmb1qZn9jZkOA12Kr/Sl2R/94bJu9qmvM7JdmtszMfmhm78aOc5eZDW63TpGZ/SJ2jHfNbF53VRZmdhrw78DB7X6dLGi3SqGZ3WtmO83sL2b2/Q7bH2Rm95hZnZl9bGZPmllJd9c0Vg30f83sQTOrN7OtsWtxUOz86s1so5lN67DdDDP7HzPbFTu3fzOz/HbLh8b2GT/3+Z0ce4iZ3WRmb8fWqzazk7srr2Q+BXnpFzMbCqwBtgFTgSkEXwi/axeAfwYYcCJwFDAf+Njdm2PbAEwj+JVwXjeHOxUYCUwHZgNfB+a2W34bcBxwZmzdKcAx3ezvSeBy4KPYsQ8DFrdbPh94AZgE3ArcamZHx847BDwOHAxUAJOBdcCTZnZIN8cEmAesBUqAx4AHgAeBX8eO9T/AQ2b2V7FjjQR+CzwPTAS+A1wIXN1un7cSXMuvxM59KnBsh+M+FJt3LlAM/BcQMbOxPZRXMpm7a9LU4wTMCv5c9pk/F3i5w7x8YCfwldjnTcDlXex3DODAhA7z/xVY1+7zL4FaIK/dvAeAlbH3BwGtwFfbLf9UrBx3dnNe3wY+6GT+e8B9Heb9BZgfe386wZfDX3VYZyPw/W6Ot9d+gU/Hzv/furomwE3AK4B1KHdj7FrHz/3sdsuHEVR33Rn7PA6IAod2KM/jwKLu/i00ZfakOnnpr8nAGDPrWH9eAIyOvb+F4C74K8ATwK/dvWY/jvWyu+9p9/kd4Iux90cAIYI7bwDcfYeZbdyP48S91OHzO8BnYu8nE3yJfGRm7dcZwifn3eN+3f0DM4sCf2q3/P3Ya/xYY4HnPBaJY54FDgBGAQcSnPsf2u13u5m91m79yQS/3Gs7lHcwsKuH8koGU5CX/soDqoFvdrLsAwB3v8PMVhLc/Z4CLDCzH7v7v/bxWC0dPjvJrXLs7nh5wFvAjE6229HH/XacFw/mvTm33qaRzYsdY1In2zT0ch+SgVQnL/31R+BI4H13f73DtD2+kru/6e53uvss4CfAxbFFu2OvoX6W488E1RFtdfBmVkRQBdGd3ft57D8Cfw3s6uS86/Zjf915DTje9r4FP4GgddMWPjn34+ILzexTBL8A2pc3H/h0J+V9N8HllTSiIC/99XOCeu9HzWxqrCXNSWZ2q5mNADCzJWb25diyowkeDL4a2/5dgkB7mpl9JhaY+8zdPyJ4eHmTmU0zs/HAvcAeur/b3QJ8KlbmT5vZAb085CqCwPlY7NxGmtnxZnadmZXtzzl0YzFBFdCtsX4FZwHXAje7e0vs3B8gOPeTY30O7ic4dwDc/U/Arwge6M6M/VscY2aXm9mZCS6vpBEFeekXd/+Y4K7yHYLWIa8B9xHUycerLfIJmiq+RvCgbytwUWz7JuBS4HsEAf+RfhTn+wQtU1YBq4HngJeB5m62eSpW3l8DdcA/9uZA7h4Fvhw7xv0ED5d/SVBH/t5+lb7rY20BzgCOBzYA/xEr89XtVvtHgjr5FQTn/jztnk/EnA/8AlgE/C9By57jgDcTWV5JL7b3sxyR7BG7K38L+LG7357q8oikgh68StYws2MJ7qTXEbR8uZLgV8SyVJZLJJUU5CWbGEHnpiMJ6vnXA1Pd/f1utxLJYqquERHJYnrwKiKSxVJeXfPpT3/aR44cmepiiIhklBdffPEDd+8pT1Lqg/zIkSNZty5lY0OIiGQkM9vam/VUXSMiksUU5EVEspiCvIhIFkt5nXxnWlpaeOutt2hu7q43uvTFkCFDGD58OPn5+T2vLJLlamvhppvgscdg8WL4h3+Ar3wF5s2D0T0kiu7PtimR6oT2kydP9o7eeOMNr6ur8z179uyzTPpuz549XldX52+88UaqiyKScqtWuRcUuOfnu8+eHcw7//zgc0FBsDwZ2yYa7QbV6W5Ky+qa5uZmDj74YDoMbiD7ycw4+OCD9ctIcl5tLcyaBY2NEG2J8sOxK+Haa/nh2JVEW6I0NgbLa2u737alBebMCebPmRN87m7bVErL6hpAAT7BdD1FYPduaGgAolEoL8f/pRoaGyguKCQ6owyqqiAUYmMn44m1bUuwfctjEbh2PVMnTMJbKyAUDEvQ2baplJZ38n1RWwtz50JREeTlBa9z56bft6mIpN78+bFAHYlAdTXWUA/uwWt1NUQiNDQE9etdbhv7gsj/u/PgqquC1/JyiEa73DaVMjrIRyJQXAx33w07d4J78Hr33cH8SGT/93388cfv13aPPvoor776as8risiAi0SgshJ2V69vd1se09DA7hdqOOMMePzxrrdtXh58QVAffEFQH3xBNC+PdLltKmVskO9YP9ZeIurHnnvuuf3aTkFeJH2Fw7BmDVz/+CS8oHCvZV5QyPWREtauDdbrattlV67HO3xBeEMDS6+s6XLbVMrYIH/TTfsG945aWuDmm/dv/+HYv9SaNWuYNm0as2bNYsyYMZx//vl4LHPnggULGDduHMXFxcyfP5/nnnuOxx57jB/+8IeUlJRQW1vLXXfdxTHHHMPEiRM5++yzaWxsBOCCCy7g+9//Pscffzyf//znWbbsk5TnN9xwA0cddRQTJ05kwYIFANTW1nLaaacxefJkpk6dysZ0q/gTyQCzZ0N+Prx+RAXR0jK8MIyb4YVhoqVlvH5EBfn58I1vdL3te4dNgg5fEBQU8v5hJV1um1K9aYKTzKmzJpSvvvpqj82Hhg51D34rdT8VFfW+SVJ7hYWF7u7+1FNPeVFRkf/lL3/xaDTqxx13nD/zzDP+wQcf+JFHHtnWzHPbtm3u7v7Nb37Tly5d2rafDz74oO39lVde6bfddlvberNmzfJoNOqvvPKKjx492t3dV61a5V/60pe8oaHB3d0//PBDd3c/+eSTfdOmTe7u/vzzz/v06dP7fE69ua4i2ez114Omjk8+6d66q9X/fPMKv/fz1/qfb17hrbta/YknguWvv97Ntr9r9T0nz/DWA8Iexbz1gLDvOXmGP/HfrV1umwz0sgll2rau6Ul9fWLX686xxx7L8OHDASgpKWHLli0cd9xxDBkyhIsuuojKykoqKys73fbll19m4cKFbN++nfr6esrLy9uWffWrXyUvL49x48bx/vvBuBarV6/mwgsvpKCgAICDDjqI+vp6nnvuOc4555y2bXft2tX/ExPJMaNHw7JlQVy4/IoQixZV4l5J3jy47G048cRgeWedmtq2bQrxTxOr2PhkhInU8FJzCWNKKpjaHOpy21TK2CAfDgcPWXuzXn8NHjy47X0oFKK1tZVBgwbxwgsv8MQTT7Bs2TKWLFnCk08+uc+2F1xwAY8++igTJ07k/vvvZ82aNZ3u17sZvGXPnj0MGzaMmpqa/p+MSI6rqAie1VVVwdChQcAPh6GpCcaN6z5If7JtiKeLKllVX0k4DJ/b1fO2qZKxdfLx+rHuJLN+rL6+nh07dnD66adz8803s2HDBgCGDh3KznbfPjt37uSwww6jpaWFhx56qMf9nnrqqdx3331tdfcfffQRRUVFjBo1iqVLlwLBF0L8eCLSd6NHw5IlsGNH0CJyx47gc2+CdH+2TYWMDfLz5vUuyF96aXKOv3PnTiorKykuLuaEE05g0aJFAHz961/nxhtvZNKkSdTW1nLttddSVlbGlClTGDNmTI/7Pe200/jKV75CaWkpJSUl/PSnPwXgoYce4p577mHixImMHz+e3/zmN8k5MZEMEe8jM3w4LF8evKqPzL5SPsZraWmpdxw05LXXXmPs2LE9bhuJBM0kW1r2bmmTnx9My5YFP68k0NvrKpLu4v/3o7uj/OSECPNOXs9Pn5jEwt9XEPqrUE783zezF929tKf1MvZOHoJ/xJdegosv3rvH68UXB/Oz/R9ZJBfF+8g0N0ZZ2VrOP1YHPU9/8MJ5rGwtp7kxmpY5ZFIl4UHezL5uZq+ZWYOZ1ZrZ1EQfo71Mqx8Tkf6J55CJrohwSriaQU1Bz9NBTfWcEq4muiJITdBTP5qUiUZhZZAYjZUrg89JlNAgb2anAjcAFwJDgROBNxJ5DBHJbW05ZNZ3npqAmpq0zCEDtOW94bzg1wfnfZL3JlkSfSf/z8A17v68u+9x97fd/e0EH0NEclhbDpmxk6CwQ8/TwkKax5SkZQ4ZoC0xWse8N/1KtNWDhAV5MwsBpcAhZva6mb1lZkvM7IBO1r3YzNaZ2bq6urpEFUFEckA8h8zX7gtSExAOgxmEg9QEX7uvIi1zyADd/vpIlkTeyR8K5AOzgKlACTAJWNhxRXf/mbuXunvpIYccksAiiEi2i/eRKTowROPyKqIPPszuH11D9MGHaVxeRdGBofTMIQMwqfNfH5SUJO2QiQzyTbHXxe7+rrt/ACwCTk/gMQbE9u3bueOOO5J+nDVr1ux3tkuRXBXvI3PRRVAwNMSGwys547mFbDi8koKhIebMSW4fmX6pqICyvX99UFaW1KaACQvy7r4NeAto3/A+tY3w91Nfg7y7s2fPnj4fR0FepO/2yj9zOZSWwurVcMwxsGBBUPuRjjlkgGD0qKoqePhhuOaa4DU2GlWyJDp3zX3AP5jZ40ALcCmwMsHHSLoFCxZQW1tLSUkJ06dP56WXXmLbtm20tLRw3XXXcdZZZ7FlyxbKy8spKyvjxRdfZNWqVaxevZobbriBYcOGMXHiRAYPHsySJUuoq6vj29/+Nm+++SYAt9xyC5/97Ge58847CYVCPPjggyxevJipU5Pa2lQka/Qn/0zKhULBk+MukhomXG9SVfZ2IqiTvwPYDrwH3AYM6W6b/U01nEybN2/28ePHu7t7S0uL79ixw93d6+rqfPTo0b5nzx7fvHmzm5n/4Q9/cHf3t99+20eMGOEffvih796920844QT/7ne/6+7u5513nj/zzDPu7r5161YfM2aMu7tfddVVfuONNw7YeaX6uopI4pCKVMPu3gLMjU1Zwd254oorePrpp8nLy+Ptt99uSws8YsQIjjvuOABeeOEFTjrpJA466CAAzjnnHDZt2gQE6YPbjxb18ccfU5+IHMgiIj3I2FTDA+Whhx6irq6OF198kfz8fEaOHElzczMAhR2fkndhz549PP/88wwZMiSZRRUR2UdG565Jlvbpgnfs2MFnPvMZ8vPzeeqpp9i6dWun2xxzzDGsXbuWbdu20drayq9+9au2ZV/+8pdZvHhx2+d4XviOaYlFRBJNQb4TBx98MFOmTGHChAnU1NSwbt06jjrqKP7zP/+zy3TBn/3sZ7niiis49thjmTJlCiNHjuRTn/oUALfddhvr1q2juLiYcePGceeddwJw5plnsnz5ckpKSnjmmWcG7PxEJHdkdKrhdFNfX084HKa1tZWZM2cyZ84cZs6cmepitcnU6yoi+8qJVMPp5uqrr6akpIQJEyYwatQovvrVr6a6SCKS4/TgNYHioziJiKQL3cmLiGQxBXkRSRmN05p8CvIikhKRCBQXw713Rbn0iJXMfPlafvCFldx7V5Ti4qSmWM8pqpMXkQHXfpzWKsqZVl0Naxv4wZBCSlrLKG+tYtasEC+9lOZ5aDKA7uQHSDg2gsE777zDrFmzul33lltuobGxse3z6aefzvbt25NaPpGBlPHjtGaQ7AjyAzww7ieH7ftx/vqv/5ply5Z1u07HIL9q1SqGDRvW52OJpKuMHqc1w2R+kE/SwLhbtmxhzJgxnH/++YwdO5ZZs2bR2NjIyJEjufzyyzn66KNZunQptbW1nHbaaUyePJmpU6eyceNGADZv3syXvvQljjrqKBYuXLjXfidMmBArepT58+czYcIEiouLWbx4MbfddhvvvPMO06dPZ/r06QCMHDmSDz74AIBFixYxYcIEJkyYwC233NK2z7Fjx/L3f//3jB8/ni9/+cs0NTUhkq4yepzWTNObVJXJnPqdanjFCvdw2D0YFjeYwuFgfj9s3rzZAX/22Wfd3f3CCy/0G2+80UeMGOE33HBD23onn3yyb9q0yd3dn3/+eZ8+fbq7u5955pn+85//3N3dlyxZ4oWFhW37jacxvuOOO/zss8/2lpYWd3f/8MMP3d19xIgRXldX13aM+Od169b5hAkTvL6+3nfu3Onjxo3zP/7xj75582YPhUK+fv16d3c/55xz/IEHHtjnnJRqWNLF0KHBf9UzT2/11mkzgv+zZu7hsLdOm+Fnnt7q4F5UlOqSpi96mWo48+/kkzgw7uGHH86UKVMAmD17Ns8++ywA5557LhCkMXjuuec455xzKCkp4ZJLLuHdd98F4Pe//z3nnXceAN/oYrDJ1atXc8kllzBoUPD8O56muCvPPvssM2fOpLCwkHA4zN/8zd+05bwZNWoUJbFxIidPnsyWLVv6ceYiyZXR47RmmMwP8kkcGNfMOv0cTzG8Z88ehg0bRk1NTdv02muvdbl9Mg0ePLjtfSgUorW1dcCOLdJXGT1Oa4bJ/CCfxIFx33zzTf7whz8A8Itf/IITTjhhr+VFRUWMGjWKpUuXAkHV14YNGwCYMmUKv/zlL4EgJ31nTj31VP7jP/6jLSB/9NFHQNcpiKdOncqjjz5KY2MjDQ0NLF++XEMGSkbK6HFaM0zmB/kkDoz7xS9+kdtvv52xY8eybds2vvOd7+yzzkMPPcQ999zDxIkTGT9+PL/5zW8AuPXWW7n99ts56qijePvttzvd/7e+9S0+97nPUVxczMSJE/nFL34BwMUXX8xpp53W9uA17uijj+aCCy7g2GOPpaysjG9961tMmjSp3+cpkgoVFcF4rM3NwTiteXl7j9OagPs0QamGu7RlyxYqKyt5+eWXU1qOREqH6yoiiaFUwyIioiDflZEjR2bVXbyI5Ka0DfKprkbKNrqeIrkpLYP8kCFD+PDDDxWYEsTd+fDDDxkyZEiqiyIiAywts1AOHz6ct956i7q6ulQXJWsMGTKE4cOHp7oYIjLA0jLI5+fnM2rUqFQXQ0Qk46VldY2IiCSGgryISBZTkBcRyWIK8iIiWSwpQd7MjjCzZjN7MBn7FxGR3knWnfztwP8kad8iItJLCQ/yZvZ1YDvwRKL3LSLppbYW5s6F4cNh+fLgde7cYL6kh4QGeTMrAq4BLuthvYvNbJ2ZrVOHJ5HMFIlAcTHce1eUS49YycyXr+UHX1jJvXdFKS4OlkvqJTTVsJndCrzj7jeY2dXAF9x9dnfbdJZqWETSW21tEOCbG6NUUc60A6oZ1NxA65BC1jSVUU4VQwpCvPSSBv5IlgFPNWxmJcApwM2J2qeIpKfdu4PRm6IrIpwSrmZQUz24M6ipnlPC1URXRGhogJaWVJdUElldMw0YCbxpZu8B84GzzeyPCTyGiKSB+fODIM/69bE37TQ0QE0NDQ3BWK6SWokM8j8DRgMlselO4LdAeQKPISJpIBKBykpoHjsJYgPbtykspHlMCWecAY8/npryyScSFuTdvdHd34tPQD3Q7O56spqj1PIie4XDsGYNfO2+CqKlZcEMMwiHiZaW8bX7Kli7NpgtqZW0Hq/ufnVPD10le8VbXtx9N0yfDjNnwrRpwWe1vMh8s2dDfj4UHRiicXkV0QcfZvePriH64MM0Lq+i6MAQ+fnwjW+kuqSitAaScLW1MGsWNDZCtCXKD8euhGuv5YdjVxJtidLYGCzv7o5evwLS27x5QZC/6CIoGBpiw+GVnPHcQjYcXknB0BBz5gTLL7001SWVhDah3B9qQpl9XnsNxo4FolEoL8efr8YaG/CCQuy4MqiqglCIjRthzJh9t49Egi+BlhY491x44IHgzvGRR4LAsWwZVFQM+GlJB5EItLbC2rWwaBG4Q14eXHYZnHgiDBqkf6dkGvAmlCJxbS0vIhGorsYaguZ11lAP1dUQiXTZ8qL9r4CWFpgzJ5g/Z07wuTe/AmRgVFTAuHHQ3AxDhwYBPhyGpqZgvgJ8elCQl4SLt7zYXd1587rdL9R02fIi3v7aHbw1ygnbg6qeqTtW4q1R3FH76zQyejQsWQI7dgQ/3HbsCD6rA1T6UJCXhIu3vLj+8Ul4wd7N67ygkOsjJV22vGj7FRCr6sn/u/PgqquC1/JyiEbV/lqkDxTkJeHiLS9ePyJoXueFYdwMLwya171+REWXLS/a2l8vD6p6qA+qeqgPqnqal0fU/lqkDxTkJeHiLS/m/H0I++8qaq97mPtHXUPtdQ9j/13Fhd8KddnyIv4rYNmV6/EOVT3e0MDSK2vU/lqkDxTkpUv724xx9OigBUx9PVx+RYgjL6tkzhsL+eK8ShZcGaKhIVjeWb1t/FfAe4dNgg5VPRQU8v5hJWp/LdIHCvLSqf52ZtrflhfxXwGTF1ZAWRnRA8LswYgeEIayMo6+skLtr0X6QO3kZR/xNLKNjZBHlPU/iVAcXc+GvEkcvbCCPYQoKCBpaWTj7a+ffirKxpsjTKSGl6yEMZdWMHVaSO2vRVA7eemHtmaMrVGiM8o56l+CFi7F159HdEY53hpNajPG+K+Apt0hni6q5Pq8hawdWknjrlCv2l+rt6zIJxTkZR/96cyUKPvb/lo5c0T2piAv++hPZ6ZUUm9ZkX0pyMs++tOZKZX26i3rcPzxwfwpUz6Zp96ykmsU5GUf/enMlEpt1UwA0SiDfxekRBj8u5VBnQ+ot2wn9Awjy7l7SqfJkye7pJfXX3cvKHB/8kn31l2t/uebV/i9n7/W/3zzCm/d1epPPBEsf/31VJd0b2bu06a51+9odZ8xwz0cDmaGw+4zZnj9jlY/6ST3vLxUlzR9rFoV/FsOHtTqP522wv2aa/zGk1b44EGtXlAQLJf0BKzzXsRYNaGUTmViGtmiIti5E64uXcmPXzsveFAc44Vhrhn7MFevq6SoKHiQm+viTWWbG6NUUc60A6oZ1NxA65BC1jSVUU4VQwpCSWsqK/2jJpTSL5mYRjZezTR+93po7PDAuLGBcbtr0rKaKVXizzCiKyKcEq5mUFPQimpQUz2nhKuJrojoGUYWUJCXLmVaGtl4b9kjz+1kcOmCQo78Wol6y7bT9gxjfeetqKip0TOMLKAgL1kjnjNn67gK/nxQGTsJE8XYSZjXDy7jzfEVXebMyUVtGT/HdvKlWFhI85iStGwqK30zKNUFEEmkigqorQ1xyxlVvH9/hC821/C/Q0o49IwKfnBUSAG+nXhT2a8VVLC8tIzQuurgDr6wkGhpGV+7r4K1a4NnHZK5FOQl64weDYvvCMEdlUBlqouTtmbPDnoCFx0YovGhKgrWRoj+sYbQ0SU0nlRB0fdCeoaRBVRdI5Kj4s8wLroICoaG2HB4JWc8t5ANh1dSMDTEnDnoGUYWUJAXaSeXOgbtlff/cigthdWr4ZhjYMECus37L5lDQV4kJheTm2ViU1npG3WGEmHvHPoATz4ZBPonn4QZM4J5ycyhL9JX6gwlQG5VP/THXsnNWqOcsD3IezN1x0q8NarkZpKxFOSzWLz64d67olx6xEpmvnwtP/jCSu69K5q11Q/7q61jUDQK5eXk/10wUEr+350H5eUQjapjkGQkVddkKeUl6Zu8PDjpJIh8dyVDLjwveBoZFw7TfN/DnLakkmeeaUtoKZJSA15dY2aDzeweM9tqZjvNrMbM9NgmRZSXpG/iHYOWXbke79DF3xsaWHplTVrm0BfpSSKrawYBfwFOAj4FLAQeMbORCTyG9JLykvRNPLnZe4dNgoJ98968f1hJWncM0rMX6UrCgry7N7j71e6+xd33uPtKYDMwOVHHkN5TXpK+iXcMmrywAsrKiB4QZg9G9IAwlJVx9JUVadsxSM9epDtJq5M3s0OBrUCJu2/ssOxi4GKAz33uc5O3bt2alDLksnhu9TNPj7K8sXyfvCQzC6pYsSqk3OrtxHPoP/1UlI03R5hIDS9ZCWMurWDqtFBa5tDXs5fcldImlGaWDzwE/LxjgAdw95+5e6m7lx5yyCHJKELOi1c/FB0YonF5FdEHH2b3j64h+uDDNC6vouhA5SXpKN4xqGl3iKeLKrk+byFrh1bSuCvUq45Bqagy0bMX6VFvho/qy0TwxfFLYBWQ39P6Gv4vOfYawq/V/cUX3U85JXhtbfW0HcIvU8WH0cvPd589O5h3/vnB52QOo3f66e719e5+zTXBUIefjFkefL72Wq+vD9aT7EIvh/9L6J28mRlwD3AocLa76/4hRZSXZODU1sKsWUFv2ZYWmDMnmD9nTvC5sTFYnow7ej17kZ4kurrm34GxwJnu3pTgfUsfKS/JwEhUb9n9qe5pywl/XwXR0rJghhmEw3vlhFfTzxzWm9v93kzACMCBZqC+3XR+d9upukYyXVuVSWur+4wZ7uFwUFUSDgefW1t7rDLZ3+qe73wnWOf8890/3tbqrY+u8F0/vtZbH13hH29rbdvHd7+b8NOWFKOX1TUJr5Pv66QgL5nOzH3aNPempSuCwN6+Xjwc9qalK/ykk9zz8jrfPv78BNzzaPUNP1nhfs01XnPdCs+j1aHr5yd69pK7ehvkNTKUSD+19ZZ9Zz3nNzRg7Za19ZbdVNnlMHrx6p543hz/l2pobKC4oJC9u1ClAAAPDElEQVTojDKoqoJQiI37tFPb99nLokXBt8sxx8Bll8GJJ+rZS65TgjKRfupvb9m23smRCFRXYw1BM0hrqIfqaohEuu2drGcv0h0FeZF+6m9v2XgLmd3Vnaeg2P1CTY8tZEaPhiVLgo5t0WjwumSJ7uBFA3mL9FtblUlTiH+aWMXGJ2O9ZZtLGFNSwdTmULdVJvHqnuvrJ/HjgsLgDj7GCwq5PlLC2nV0Wd0j0h3dyYskQH96y8are14/ImgG6YVh3AwvDJpBvn5EhXony35TPnmRFIvnn1m5Ek6cEmXzHRGeWVzD1H8oYdTcCtY+G+LMMzX0oOytt7lrFORF0kA8OdratZ+0kMnL+6SFTDomR5PU0hivIhlELWQkWXQnLyKSgXQnLyIiCvIiItlMQV5EJIspyIuIZDEF+QyQimHlRCQ7KMinuUgk6Chz990wfTrMnAnTpgWfi4uD5SIiXVGQT2OpHFZORLKDgnwaS9SwciKSu5SFMo3Nnw+PPAKFQ4LBJPKrq6GhgfzCQigLBpNoaA4xbx789repLq2IpCPdyaexeJ7x5uXBYBLUB4NJUB8MJtG8PNJjnnERyW0K8mmsbVi5K9fjHQaTaBtWbm2wnohIZxTk01h/h5UTEVGQT2P9HVZOREQPXtNYf4eVExFRkE9zFRVBO/iqqmBYuVX1lYTD8LldQZ5xBXgR6Y7yyYuIZCDlkxcREQV5EZFspiAvIpLFFORFRLJYQoO8mR1kZsvNrMHMtprZ3yZy/yIi0jeJbkJ5O7AbOBQoAX5rZhvc/ZUEH0dERHohYXfyZlYInA38yN3r3f1Z4DFAne5FRFIkkdU1RwKt7r6p3bwNwPgEHkNERPogkUE+DHzcYd4OYGjHFc3sYjNbZ2br6urqElgEERFpL5FBvh4o6jCvCNjZcUV3/5m7l7p76SGHHJLAIoiISHuJDPKbgEFmdkS7eRMBPXQVEUmRhAV5d28Afg1cY2aFZjYFOAt4IFHHEBGRvkl0Z6i5wAHA/wMeBr6j5pMiIqmT0Hby7v4R8NVE7lNERPaf0hqIiGQxBXkRkSymIC8iksUU5AdIbS3MnQvDh8Py5cHr3LnBfBGRZFGQHwCRCBQXw913w/TpMHMmTJsWfC4uDpaLiCSDgnyS1dbCrFnQ2AgtLTBnTjB/zpzgc2NjsFx39CKSDIlONSwd7N4NDQ2ffN61K3idMgXaj6G+cePAlktEcoPu5JNs/vy9g/zgwXu/QrB83ryBLZeI5AYF+SSLRKCycu9A315DA5xxBjz++MCWS0Ryg4J8koXDsGYNnHsuNDXtvaypKZi/dm2wnohIoinIJ9ns2ZCfD8OGQWtrMDU2fvJ+2LBg+Tc0fpaIJIGCfJLNmxcE8YsugoICeOklOOus4LWgIGhlk58Pl16a6pKKSDYyb9/EIwVKS0t93bp1KS1DskUiwV37009F2XhzhBLWs8EmMebSCqZOCzFoEFRUpLqUIpJJzOxFdy/taT01oRwAFRVQuynKEd8pZzjVHEADTV7IW/9VRv4lVYw+MpTqIopIllJ1zQAZvSnCmB3VhKknhBOmnjE7qhm9Sd1dRSR5FOQHyvr1+7ajbGiAmprUlEdEcoKC/ECZNAkKC/eeV1gIJSWpKY+I5AQF+YFSUQFlZUGDeLPgtaxMT1xFJKn04HWghEJQVRU0tampCe7gKyqC+SIiSaIgP5BCoSDHQWVlqksiIjlC1TUiIllMQV5EJIspyIuIZDEFeRGRLKYgLyKSxRTkRUSymIK8iEgWU5AXEcliCvIiIllMQb6Xamth7lwYPhyWLw9e584N5ouIpKt+B3kzG2xm95jZVjPbaWY1ZpZVWbciESguhrvvhunTYeZMmDYt+FxcHCwXEUlHibiTHwT8BTgJ+BSwEHjEzEYmYN8pV1sLs2YFg2+3tARjskLw2tISzJ81S3f0IpKe+p2gzN0bgKvbzVppZpuBycCW/u4/1Xbv3nusj127gtcpU6D98LgbNw5suUREeiPhdfJmdihwJPBKN+tcbGbrzGxdXV1doouQUPPn7x3kBw/e+xWC5fPmDWy5RER6I6FB3szygYeAn7t7l/e27v4zdy9199JDDjkkkUVIuEgkyAzcceS+uIYGOOMMePzxgS2XiEhv9BjkzWyNmXkX07Pt1ssDHgB2A99LYpkHVDgMa9bAuedCU9Pey5qagvlr1wbriYikmx6DvLtPc3frYjoBwMwMuAc4FDjb3VuSXO4BM3s25OfDsGHQ2hpMjY2fvB82LFj+jW+kuqQiIvtKVHXNvwNjgTPdvamnlTPJvHlBEL/oIigogJdegrPOCl4LCoJWNvn5cOmlqS6piMi+EtFOfgRwCVACvGdm9bHp/H6XLg2MHg3LlkF9PVx+OZSWwurVcMwxsGBBUCe/bFmwnohIuklEE8qtgCWgLGmroiJoB//fkSizhkQY07yejYMn0dxQwbhxIQV4EUlbGsi7l0aPjLJ4UzmEqoEGCBXCpjIYWQWEUl08EZFOKXdNb0UiUF0d1Nu4B6/V1cppICJpTUG+t9av37exfEMD1NSkpjwiIr2gIN9bkyZBYeHe8woLoaQkNeUREekFBfneqqiAsrKg15NZ8FpWFswXEUlTevDaW6EQVFUFdfA1NcEdfEVFMF9EJE0pyPdFKBQksqmsTHVJRER6JaeqazS6k4jkmpwJ8hrdSURyUU4EeY3uJCK5Kifq5DW6k4jkqpy4k9foTiKSq3IiyGt0JxHJVTkR5DW6k4jkqpwI8hrdSURyVcYF+Xhb96IiyMsLXntq667RnUQkV5m3b16SAqWlpb5u3bperRuJBE0dW1qCKS4/P5iWLes6lUwkEty1r10LixYFrWry8uCyy+DEE2HQIKWhEZHMYWYvuntpT+tlzJ18x7bu7fWmrXtFBYwbB83NMHRoEODD4aBOftw4BXgRyU4Z007+ppv2De4dtbTAzTfDkiWdLx89GpbcGmXJaZEgP/ykSUoyJiJZLWOqa4qKYOfOnvdXVAQ7dnSxMBqF8vJgRKeGhiAffFlZkF1SgV5EMkjWVdfU1ydgPQ3hJyI5JmOCfG/bsHe7nobwE5EckzFBPt7WvTs9tnXXEH4ikmMyJsjH27p3p8e27hrCT0RyTMa0rhk9OmgH31M7+dGju9mJhvATkRyTMa1r4mprg2aSDzwQPDcNh4Mqmksv7SHAi4hkkd62rsm4IC8iIlnYhFJERPpOQV5EJIspyIuIZDEFeRGRLJbyB69mVgdsTWkhBs6ngQ9SXYg0puvTPV2fnuXSNRrh7of0tFLKg3wuMbN1vXkanqt0fbqn69MzXaN9qbpGRCSLKciLiGQxBfmB9bNUFyDN6fp0T9enZ7pGHahOXkQki+lOXkQkiynIi4hkMQV5EZEspiDfD2b2PTNbZ2a7zOz+dvOPM7PfmdlHZlZnZkvN7LBu9rPGzJrNrD42/e+AnECSdXN9xsXmb4tNq81sXDf7OcjMlptZg5ltNbO/HZATGAAJvEY59TfUYZ0fm5mb2Snd7GekmT1lZo1mtrG7dbONgnz/vANcB9zbYf6BBE/5RwIjgJ3AfT3s63vuHo5NX0x0QVOkq+vzDjALOIigh+JjwC+72c/twG7gUOB84N/NbHzCS5saibpGkFt/QwCY2WjgHODdHvbzMLAeOBi4ElhmZj32Fs0GCvL94O6/dvdHgQ87zI+4+1J3/9jdG4ElwJSUFDKFurk+2919iwdNuwyIAl/obB9mVgicDfzI3evd/VmCgNfdaL4ZIxHXKJt1dX3auR24nOAmoFNmdiRwNHCVuze5+6+APxH8XWU9BfmBcSLwSg/rXG9mH5jZ781s2gCUKeXMbDvQDCwG/qWL1Y4EWt19U7t5G4BsuZPvVi+vUVxO/Q2Z2TnALndf1cOq44E33H1nu3k58zeUMWO8ZiozKwZ+DJzVzWqXA68S3I18HVhhZiXuXjsARUwZdx8Wu1P/Jl0nqQsDH3eYtwMYmsyypYteXiPIsb8hMxtK8KV3ai9WDxP8zbS3A/hsosuVjnQnn0Rm9gUgAvyjuz/T1XruXu3uO919l7v/HPg9cPpAlTOV3L0BuBP4TzP7TCer1ANFHeYVETznyAm9uEa5+Dd0NfCAu2/pxbo5/TekIJ8kZjYCWA1c6+4P9HHzeD1srsgDCuj8zmoTMMjMjmg3byI9V39lm+6uUWey/W9oBvB9M3vPzN4DDgceMbPLO1n3FeDzsbv/uJz5G1KQ7wczG2RmQ4AQEDKzIbF5nwWeBJa4+5097GOYmZW32/Z8gjr8x5N/BsnVzfU51cwmmVnIzIqARcA24LWO+4jdxf4auMbMCs1sCkHVV1+/ONNSIq5RLv4NEQT5CUBJbHoHuITgQexeYs9zaoCrYtvPBIqBXw3QaaSWu2vaz4ngJ6N3mK4Groq9r28/tdvuCiASe38I8D8EPx23A88Dp6b63JJ8fc4BNsauSx3wW6C4s+sT+3wQ8CjQALwJ/G2qzy2drlEu/g11st4W4JR2n+8E7mz3eSSwBmgC/rf9utk+KUGZiEgWU3WNiEgWU5AXEcliCvIiIllMQV5EJIspyIuIZDEFeRGRLKYgLzktlod8VqrLIZIsCvKSlWLBu7vp/tiqhwErUlhUkaRSZyjJSmb2f9p9rATuIgjocU3u3jEzoUjW0Z28ZCV3fy8+EXT132tePMC3r66JDRHnZvZ1M1trZk1mtt7Mis1sgpk9FxuC8FkzG9X+eGZ2ppm9GBuCb7OZ/cTM/mrAT1ykAwV5kX39M3ADMIngC+JhgkE7rgSOBYYAt8VXNrNy4CGCEcDGA3MIhu7raZAPkaRTkBfZ1yJ3X+XuG4GbgHHAYnd/yt1fIQjm09utfyVwo7vf5+617v4UwSAe3zazbE73KxlAI0OJ7Ouldu/fj73+qcO8QjMr8GAM38nAsR1ymecBBwD/h54HmRZJGgV5kX21tHvv3czLa/f6z8DSTvZVl9iiifSNgrxI//0RGOPur6e6ICIdKciL9N81wEoz2wo8ArQSjFp0rLv/U0pLJjlPD15F+sndq4AzCB7GvhCbFhCMYiWSUuoMJSKSxXQnLyKSxRTkRUSymIK8iEgWU5AXEcliCvIiIllMQV5EJIspyIuIZDEFeRGRLPb/AQBlb13xYMl5AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.title(\"Testing the model\", fontsize=14)\n",
    "plt.plot(t_instance[:-1], time_series(t_instance[:-1]), \"bo\", markersize=10, label=\"instance\")\n",
    "plt.plot(t_instance[1:], time_series(t_instance[1:]), \"w*\", markersize=10, label=\"target\")\n",
    "plt.plot(t_instance[1:], y_pred[0,:,0], \"r.\", markersize=10, label=\"prediction\")\n",
    "plt.legend(loc=\"upper left\")\n",
    "plt.xlabel(\"Time\")\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Generating a creative new sequence"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "INFO:tensorflow:Restoring parameters from ./my_time_series_model\n"
     ]
    }
   ],
   "source": [
    "with tf.Session() as sess:                        # not shown in the book\n",
    "    saver.restore(sess, \"./my_time_series_model\") # not shown\n",
    "\n",
    "    sequence = [0.] * n_steps\n",
    "    for iteration in range(300):\n",
    "        X_batch = np.array(sequence[-n_steps:]).reshape(1, n_steps, 1)\n",
    "        y_pred = sess.run(outputs, feed_dict={X: X_batch})\n",
    "        sequence.append(y_pred[0, -1, 0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(8,4))\n",
    "plt.plot(np.arange(len(sequence)), sequence, \"b-\")\n",
    "plt.plot(t[:n_steps], sequence[:n_steps], \"b-\", linewidth=3)\n",
    "plt.xlabel(\"Time\")\n",
    "plt.ylabel(\"Value\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "INFO:tensorflow:Restoring parameters from ./my_time_series_model\n",
      "Saving figure creative_sequence_plot\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 792x288 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "with tf.Session() as sess:\n",
    "    saver.restore(sess, \"./my_time_series_model\")\n",
    "\n",
    "    sequence1 = [0. for i in range(n_steps)]\n",
    "    for iteration in range(len(t) - n_steps):\n",
    "        X_batch = np.array(sequence1[-n_steps:]).reshape(1, n_steps, 1)\n",
    "        y_pred = sess.run(outputs, feed_dict={X: X_batch})\n",
    "        sequence1.append(y_pred[0, -1, 0])\n",
    "\n",
    "    sequence2 = [time_series(i * resolution + t_min + (t_max-t_min/3)) for i in range(n_steps)]\n",
    "    for iteration in range(len(t) - n_steps):\n",
    "        X_batch = np.array(sequence2[-n_steps:]).reshape(1, n_steps, 1)\n",
    "        y_pred = sess.run(outputs, feed_dict={X: X_batch})\n",
    "        sequence2.append(y_pred[0, -1, 0])\n",
    "\n",
    "plt.figure(figsize=(11,4))\n",
    "plt.subplot(121)\n",
    "plt.plot(t, sequence1, \"b-\")\n",
    "plt.plot(t[:n_steps], sequence1[:n_steps], \"b-\", linewidth=3)\n",
    "plt.xlabel(\"Time\")\n",
    "plt.ylabel(\"Value\")\n",
    "\n",
    "plt.subplot(122)\n",
    "plt.plot(t, sequence2, \"b-\")\n",
    "plt.plot(t[:n_steps], sequence2[:n_steps], \"b-\", linewidth=3)\n",
    "plt.xlabel(\"Time\")\n",
    "save_fig(\"creative_sequence_plot\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Deep RNN"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## MultiRNNCell"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [],
   "source": [
    "reset_graph()\n",
    "\n",
    "n_inputs = 2\n",
    "n_steps = 5\n",
    "\n",
    "X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [],
   "source": [
    "n_neurons = 100\n",
    "n_layers = 3\n",
    "\n",
    "layers = [tf.contrib.rnn.BasicRNNCell(num_units=n_neurons)\n",
    "          for layer in range(n_layers)]\n",
    "multi_layer_cell = tf.contrib.rnn.MultiRNNCell(layers)\n",
    "outputs, states = tf.nn.dynamic_rnn(multi_layer_cell, X, dtype=tf.float32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [],
   "source": [
    "init = tf.global_variables_initializer()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_batch = np.random.rand(2, n_steps, n_inputs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [],
   "source": [
    "with tf.Session() as sess:\n",
    "    init.run()\n",
    "    outputs_val, states_val = sess.run([outputs, states], feed_dict={X: X_batch})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(2, 5, 100)"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "outputs_val.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Distributing a Deep RNN Across Multiple GPUs"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Do **NOT** do this:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [],
   "source": [
    "with tf.device(\"/gpu:0\"):  # BAD! This is ignored.\n",
    "    layer1 = tf.contrib.rnn.BasicRNNCell(num_units=n_neurons)\n",
    "\n",
    "with tf.device(\"/gpu:1\"):  # BAD! Ignored again.\n",
    "    layer2 = tf.contrib.rnn.BasicRNNCell(num_units=n_neurons)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Instead, you need a `DeviceCellWrapper`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [],
   "source": [
    "import tensorflow as tf\n",
    "\n",
    "class DeviceCellWrapper(tf.contrib.rnn.RNNCell):\n",
    "  def __init__(self, device, cell):\n",
    "    self._cell = cell\n",
    "    self._device = device\n",
    "\n",
    "  @property\n",
    "  def state_size(self):\n",
    "    return self._cell.state_size\n",
    "\n",
    "  @property\n",
    "  def output_size(self):\n",
    "    return self._cell.output_size\n",
    "\n",
    "  def __call__(self, inputs, state, scope=None):\n",
    "    with tf.device(self._device):\n",
    "        return self._cell(inputs, state, scope)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [],
   "source": [
    "reset_graph()\n",
    "\n",
    "n_inputs = 5\n",
    "n_steps = 20\n",
    "n_neurons = 100\n",
    "\n",
    "X = tf.placeholder(tf.float32, shape=[None, n_steps, n_inputs])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [],
   "source": [
    "devices = [\"/cpu:0\", \"/cpu:0\", \"/cpu:0\"] # replace with [\"/gpu:0\", \"/gpu:1\", \"/gpu:2\"] if you have 3 GPUs\n",
    "cells = [DeviceCellWrapper(dev,tf.contrib.rnn.BasicRNNCell(num_units=n_neurons))\n",
    "         for dev in devices]\n",
    "multi_layer_cell = tf.contrib.rnn.MultiRNNCell(cells)\n",
    "outputs, states = tf.nn.dynamic_rnn(multi_layer_cell, X, dtype=tf.float32)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Alternatively, since TensorFlow 1.1, you can use the `tf.contrib.rnn.DeviceWrapper` class (alias `tf.nn.rnn_cell.DeviceWrapper` since TF 1.2)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [],
   "source": [
    "init = tf.global_variables_initializer()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[[-3.29020061e-02  1.17019236e-01 -4.58992608e-02 ...  3.84477153e-02\n",
      "   -5.24900258e-02  5.80436960e-02]\n",
      "  [ 3.54288332e-02 -7.42610693e-02 -6.42375052e-02 ... -2.45757148e-01\n",
      "   -1.77626804e-01 -3.26535292e-03]\n",
      "  [ 2.59726584e-01  1.44605249e-01  3.29312116e-01 ...  3.38821977e-01\n",
      "    5.98853417e-02 -8.31450596e-02]\n",
      "  ...\n",
      "  [ 1.18043743e-01 -2.41663873e-01 -8.27798247e-01 ... -1.85782462e-01\n",
      "    1.89682379e-01 -1.35261893e-01]\n",
      "  [ 2.87830859e-01  3.92953992e-01 -3.15236300e-01 ... -7.85605535e-02\n",
      "    4.32724983e-01 -6.61824420e-02]\n",
      "  [ 7.49779761e-01  6.11052871e-01 -3.01685542e-01 ...  1.95649698e-01\n",
      "   -1.62457466e-01 -5.23968339e-02]]\n",
      "\n",
      " [[-6.68027624e-02  7.35576972e-02 -2.90275402e-02 ... -7.79968277e-02\n",
      "   -3.65773253e-02 -4.66752201e-02]\n",
      "  [ 1.71546549e-01  4.28418722e-03  2.18812120e-03 ...  3.68538052e-02\n",
      "   -8.13241452e-02  9.01001915e-02]\n",
      "  [ 3.45635489e-02 -9.57525298e-02  1.59450233e-01 ...  1.63022086e-01\n",
      "   -6.83046281e-02  1.07990295e-01]\n",
      "  ...\n",
      "  [ 1.96414590e-01 -2.15230390e-01 -5.82537949e-01 ...  3.02532643e-01\n",
      "    5.47862291e-01 -1.06282756e-02]\n",
      "  [ 2.01206997e-01  2.52655987e-02 -5.02945222e-02 ...  9.56110135e-02\n",
      "   -2.03766495e-01 -1.52696133e-01]\n",
      "  [ 4.77758050e-01  1.66605622e-01 -1.56402126e-01 ...  1.67080894e-01\n",
      "   -2.03233853e-01  7.59940522e-05]]]\n"
     ]
    }
   ],
   "source": [
    "with tf.Session() as sess:\n",
    "    init.run()\n",
    "    print(sess.run(outputs, feed_dict={X: np.random.rand(2, n_steps, n_inputs)}))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Dropout"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [],
   "source": [
    "reset_graph()\n",
    "\n",
    "n_inputs = 1\n",
    "n_neurons = 100\n",
    "n_layers = 3\n",
    "n_steps = 20\n",
    "n_outputs = 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
    "y = tf.placeholder(tf.float32, [None, n_steps, n_outputs])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note: the `input_keep_prob` parameter can be a placeholder, making it possible to set it to any value you want during training, and to 1.0 during testing (effectively turning dropout off). This is a much more elegant solution than what was recommended in earlier versions of the book (i.e., writing your own wrapper class or having a separate model for training and testing). Thanks to Shen Cheng for bringing this to my attention."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [],
   "source": [
    "keep_prob = tf.placeholder_with_default(1.0, shape=())\n",
    "cells = [tf.contrib.rnn.BasicRNNCell(num_units=n_neurons)\n",
    "         for layer in range(n_layers)]\n",
    "cells_drop = [tf.contrib.rnn.DropoutWrapper(cell, input_keep_prob=keep_prob)\n",
    "              for cell in cells]\n",
    "multi_layer_cell = tf.contrib.rnn.MultiRNNCell(cells_drop)\n",
    "rnn_outputs, states = tf.nn.dynamic_rnn(multi_layer_cell, X, dtype=tf.float32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [],
   "source": [
    "learning_rate = 0.01\n",
    "\n",
    "stacked_rnn_outputs = tf.reshape(rnn_outputs, [-1, n_neurons])\n",
    "stacked_outputs = tf.layers.dense(stacked_rnn_outputs, n_outputs)\n",
    "outputs = tf.reshape(stacked_outputs, [-1, n_steps, n_outputs])\n",
    "\n",
    "loss = tf.reduce_mean(tf.square(outputs - y))\n",
    "optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)\n",
    "training_op = optimizer.minimize(loss)\n",
    "\n",
    "init = tf.global_variables_initializer()\n",
    "saver = tf.train.Saver()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 Training MSE: 16.386942\n",
      "100 Training MSE: 4.7762165\n",
      "200 Training MSE: 4.0160613\n",
      "300 Training MSE: 3.5641122\n",
      "400 Training MSE: 2.3719723\n",
      "500 Training MSE: 3.8247461\n",
      "600 Training MSE: 3.574539\n",
      "700 Training MSE: 3.4284294\n",
      "800 Training MSE: 3.5550473\n",
      "900 Training MSE: 3.8656933\n",
      "1000 Training MSE: 3.0966144\n",
      "1100 Training MSE: 3.3440216\n",
      "1200 Training MSE: 2.9144828\n",
      "1300 Training MSE: 2.5708458\n",
      "1400 Training MSE: 3.7761896\n"
     ]
    }
   ],
   "source": [
    "n_iterations = 1500\n",
    "batch_size = 50\n",
    "train_keep_prob = 0.5\n",
    "\n",
    "with tf.Session() as sess:\n",
    "    init.run()\n",
    "    for iteration in range(n_iterations):\n",
    "        X_batch, y_batch = next_batch(batch_size, n_steps)\n",
    "        _, mse = sess.run([training_op, loss],\n",
    "                          feed_dict={X: X_batch, y: y_batch,\n",
    "                                     keep_prob: train_keep_prob})\n",
    "        if iteration % 100 == 0:                   # not shown in the book\n",
    "            print(iteration, \"Training MSE:\", mse) # not shown\n",
    "    \n",
    "    saver.save(sess, \"./my_dropout_time_series_model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "INFO:tensorflow:Restoring parameters from ./my_dropout_time_series_model\n"
     ]
    }
   ],
   "source": [
    "with tf.Session() as sess:\n",
    "    saver.restore(sess, \"./my_dropout_time_series_model\")\n",
    "\n",
    "    X_new = time_series(np.array(t_instance[:-1].reshape(-1, n_steps, n_inputs)))\n",
    "    y_pred = sess.run(outputs, feed_dict={X: X_new})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.title(\"Testing the model\", fontsize=14)\n",
    "plt.plot(t_instance[:-1], time_series(t_instance[:-1]), \"bo\", markersize=10, label=\"instance\")\n",
    "plt.plot(t_instance[1:], time_series(t_instance[1:]), \"w*\", markersize=10, label=\"target\")\n",
    "plt.plot(t_instance[1:], y_pred[0,:,0], \"r.\", markersize=10, label=\"prediction\")\n",
    "plt.legend(loc=\"upper left\")\n",
    "plt.xlabel(\"Time\")\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Oops, it seems that Dropout does not help at all in this particular case. :/"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# LSTM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [],
   "source": [
    "reset_graph()\n",
    "\n",
    "lstm_cell = tf.contrib.rnn.BasicLSTMCell(num_units=n_neurons)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [],
   "source": [
    "n_steps = 28\n",
    "n_inputs = 28\n",
    "n_neurons = 150\n",
    "n_outputs = 10\n",
    "n_layers = 3\n",
    "\n",
    "learning_rate = 0.001\n",
    "\n",
    "X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
    "y = tf.placeholder(tf.int32, [None])\n",
    "\n",
    "lstm_cells = [tf.contrib.rnn.BasicLSTMCell(num_units=n_neurons)\n",
    "              for layer in range(n_layers)]\n",
    "multi_cell = tf.contrib.rnn.MultiRNNCell(lstm_cells)\n",
    "outputs, states = tf.nn.dynamic_rnn(multi_cell, X, dtype=tf.float32)\n",
    "top_layer_h_state = states[-1][1]\n",
    "logits = tf.layers.dense(top_layer_h_state, n_outputs, name=\"softmax\")\n",
    "xentropy = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=y, logits=logits)\n",
    "loss = tf.reduce_mean(xentropy, name=\"loss\")\n",
    "optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)\n",
    "training_op = optimizer.minimize(loss)\n",
    "correct = tf.nn.in_top_k(logits, y, 1)\n",
    "accuracy = tf.reduce_mean(tf.cast(correct, tf.float32))\n",
    "    \n",
    "init = tf.global_variables_initializer()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(LSTMStateTuple(c=<tf.Tensor 'rnn/while/Exit_3:0' shape=(?, 150) dtype=float32>, h=<tf.Tensor 'rnn/while/Exit_4:0' shape=(?, 150) dtype=float32>),\n",
       " LSTMStateTuple(c=<tf.Tensor 'rnn/while/Exit_5:0' shape=(?, 150) dtype=float32>, h=<tf.Tensor 'rnn/while/Exit_6:0' shape=(?, 150) dtype=float32>),\n",
       " LSTMStateTuple(c=<tf.Tensor 'rnn/while/Exit_7:0' shape=(?, 150) dtype=float32>, h=<tf.Tensor 'rnn/while/Exit_8:0' shape=(?, 150) dtype=float32>))"
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "states"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor 'rnn/while/Exit_8:0' shape=(?, 150) dtype=float32>"
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "top_layer_h_state"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 0 Train accuracy = 0.9533333 Test accuracy = 0.9544\n",
      "Epoch 1 Train accuracy = 0.99333334 Test accuracy = 0.9737\n",
      "Epoch 2 Train accuracy = 0.99333334 Test accuracy = 0.9789\n",
      "Epoch 3 Train accuracy = 1.0 Test accuracy = 0.9823\n",
      "Epoch 4 Train accuracy = 0.97333336 Test accuracy = 0.9866\n",
      "Epoch 5 Train accuracy = 0.97333336 Test accuracy = 0.9807\n",
      "Epoch 6 Train accuracy = 1.0 Test accuracy = 0.9852\n",
      "Epoch 7 Train accuracy = 1.0 Test accuracy = 0.9888\n",
      "Epoch 8 Train accuracy = 1.0 Test accuracy = 0.9862\n",
      "Epoch 9 Train accuracy = 1.0 Test accuracy = 0.9886\n"
     ]
    }
   ],
   "source": [
    "n_epochs = 10\n",
    "batch_size = 150\n",
    "\n",
    "with tf.Session() as sess:\n",
    "    init.run()\n",
    "    for epoch in range(n_epochs):\n",
    "        for iteration in range(mnist.train.num_examples // batch_size):\n",
    "            X_batch, y_batch = mnist.train.next_batch(batch_size)\n",
    "            X_batch = X_batch.reshape((batch_size, n_steps, n_inputs))\n",
    "            sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
    "        acc_train = accuracy.eval(feed_dict={X: X_batch, y: y_batch})\n",
    "        acc_test = accuracy.eval(feed_dict={X: X_test, y: y_test})\n",
    "        print(\"Epoch\", epoch, \"Train accuracy =\", acc_train, \"Test accuracy =\", acc_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [],
   "source": [
    "lstm_cell = tf.contrib.rnn.LSTMCell(num_units=n_neurons, use_peepholes=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [],
   "source": [
    "gru_cell = tf.contrib.rnn.GRUCell(num_units=n_neurons)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Embeddings"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This section is based on TensorFlow's [Word2Vec tutorial](https://www.tensorflow.org/versions/r0.11/tutorials/word2vec/index.html)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Fetch the data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [],
   "source": [
    "from six.moves import urllib\n",
    "\n",
    "import errno\n",
    "import os\n",
    "import zipfile\n",
    "\n",
    "WORDS_PATH = \"datasets/words\"\n",
    "WORDS_URL = 'http://mattmahoney.net/dc/text8.zip'\n",
    "\n",
    "def mkdir_p(path):\n",
    "    \"\"\"Create directories, ok if they already exist.\n",
    "    \n",
    "    This is for python 2 support. In python >=3.2, simply use:\n",
    "    >>> os.makedirs(path, exist_ok=True)\n",
    "    \"\"\"\n",
    "    try:\n",
    "        os.makedirs(path)\n",
    "    except OSError as exc:\n",
    "        if exc.errno == errno.EEXIST and os.path.isdir(path):\n",
    "            pass\n",
    "        else:\n",
    "            raise\n",
    "\n",
    "def fetch_words_data(words_url=WORDS_URL, words_path=WORDS_PATH):\n",
    "    os.makedirs(words_path, exist_ok=True)\n",
    "    zip_path = os.path.join(words_path, \"words.zip\")\n",
    "    if not os.path.exists(zip_path):\n",
    "        urllib.request.urlretrieve(words_url, zip_path)\n",
    "    with zipfile.ZipFile(zip_path) as f:\n",
    "        data = f.read(f.namelist()[0])\n",
    "    return data.decode(\"ascii\").split()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [],
   "source": [
    "words = fetch_words_data()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['anarchism', 'originated', 'as', 'a', 'term']"
      ]
     },
     "execution_count": 94,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "words[:5]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Build the dictionary"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [],
   "source": [
    "from collections import Counter\n",
    "\n",
    "vocabulary_size = 50000\n",
    "\n",
    "vocabulary = [(\"UNK\", None)] + Counter(words).most_common(vocabulary_size - 1)\n",
    "vocabulary = np.array([word for word, _ in vocabulary])\n",
    "dictionary = {word: code for code, word in enumerate(vocabulary)}\n",
    "data = np.array([dictionary.get(word, 0) for word in words])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "('anarchism originated as a term of abuse first used',\n",
       " array([5234, 3081,   12,    6,  195,    2, 3134,   46,   59]))"
      ]
     },
     "execution_count": 96,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\" \".join(words[:9]), data[:9]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'cycles originated as a term of abuse first used'"
      ]
     },
     "execution_count": 97,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\" \".join([vocabulary[word_index] for word_index in [5241, 3081, 12, 6, 195, 2, 3134, 46, 59]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "('culottes', 0)"
      ]
     },
     "execution_count": 98,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "words[24], data[24]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Generate batches"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [],
   "source": [
    "from collections import deque\n",
    "\n",
    "def generate_batch(batch_size, num_skips, skip_window):\n",
    "    global data_index\n",
    "    assert batch_size % num_skips == 0\n",
    "    assert num_skips <= 2 * skip_window\n",
    "    batch = np.ndarray(shape=[batch_size], dtype=np.int32)\n",
    "    labels = np.ndarray(shape=[batch_size, 1], dtype=np.int32)\n",
    "    span = 2 * skip_window + 1 # [ skip_window target skip_window ]\n",
    "    buffer = deque(maxlen=span)\n",
    "    for _ in range(span):\n",
    "        buffer.append(data[data_index])\n",
    "        data_index = (data_index + 1) % len(data)\n",
    "    for i in range(batch_size // num_skips):\n",
    "        target = skip_window  # target label at the center of the buffer\n",
    "        targets_to_avoid = [ skip_window ]\n",
    "        for j in range(num_skips):\n",
    "            while target in targets_to_avoid:\n",
    "                target = np.random.randint(0, span)\n",
    "            targets_to_avoid.append(target)\n",
    "            batch[i * num_skips + j] = buffer[skip_window]\n",
    "            labels[i * num_skips + j, 0] = buffer[target]\n",
    "        buffer.append(data[data_index])\n",
    "        data_index = (data_index + 1) % len(data)\n",
    "    return batch, labels"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.random.seed(42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [],
   "source": [
    "data_index = 0\n",
    "batch, labels = generate_batch(8, 2, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([3081, 3081,   12,   12,    6,    6,  195,  195], dtype=int32),\n",
       " ['originated', 'originated', 'as', 'as', 'a', 'a', 'term', 'term'])"
      ]
     },
     "execution_count": 102,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "batch, [vocabulary[word] for word in batch]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([[  12],\n",
       "        [5234],\n",
       "        [   6],\n",
       "        [3081],\n",
       "        [  12],\n",
       "        [ 195],\n",
       "        [   2],\n",
       "        [   6]], dtype=int32),\n",
       " ['as', 'anarchism', 'a', 'originated', 'as', 'term', 'of', 'a'])"
      ]
     },
     "execution_count": 103,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "labels, [vocabulary[word] for word in labels[:, 0]]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Build the model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {},
   "outputs": [],
   "source": [
    "batch_size = 128\n",
    "embedding_size = 128  # Dimension of the embedding vector.\n",
    "skip_window = 1       # How many words to consider left and right.\n",
    "num_skips = 2         # How many times to reuse an input to generate a label.\n",
    "\n",
    "# We pick a random validation set to sample nearest neighbors. Here we limit the\n",
    "# validation samples to the words that have a low numeric ID, which by\n",
    "# construction are also the most frequent.\n",
    "valid_size = 16     # Random set of words to evaluate similarity on.\n",
    "valid_window = 100  # Only pick dev samples in the head of the distribution.\n",
    "valid_examples = np.random.choice(valid_window, valid_size, replace=False)\n",
    "num_sampled = 64    # Number of negative examples to sample.\n",
    "\n",
    "learning_rate = 0.01"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {},
   "outputs": [],
   "source": [
    "reset_graph()\n",
    "\n",
    "# Input data.\n",
    "train_labels = tf.placeholder(tf.int32, shape=[batch_size, 1])\n",
    "valid_dataset = tf.constant(valid_examples, dtype=tf.int32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {},
   "outputs": [],
   "source": [
    "vocabulary_size = 50000\n",
    "embedding_size = 150\n",
    "\n",
    "# Look up embeddings for inputs.\n",
    "init_embeds = tf.random_uniform([vocabulary_size, embedding_size], -1.0, 1.0)\n",
    "embeddings = tf.Variable(init_embeds)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_inputs = tf.placeholder(tf.int32, shape=[None])\n",
    "embed = tf.nn.embedding_lookup(embeddings, train_inputs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Construct the variables for the NCE loss\n",
    "nce_weights = tf.Variable(\n",
    "    tf.truncated_normal([vocabulary_size, embedding_size],\n",
    "                        stddev=1.0 / np.sqrt(embedding_size)))\n",
    "nce_biases = tf.Variable(tf.zeros([vocabulary_size]))\n",
    "\n",
    "# Compute the average NCE loss for the batch.\n",
    "# tf.nce_loss automatically draws a new sample of the negative labels each\n",
    "# time we evaluate the loss.\n",
    "loss = tf.reduce_mean(\n",
    "    tf.nn.nce_loss(nce_weights, nce_biases, train_labels, embed,\n",
    "                   num_sampled, vocabulary_size))\n",
    "\n",
    "# Construct the Adam optimizer\n",
    "optimizer = tf.train.AdamOptimizer(learning_rate)\n",
    "training_op = optimizer.minimize(loss)\n",
    "\n",
    "# Compute the cosine similarity between minibatch examples and all embeddings.\n",
    "norm = tf.sqrt(tf.reduce_sum(tf.square(embeddings), axis=1, keepdims=True))\n",
    "normalized_embeddings = embeddings / norm\n",
    "valid_embeddings = tf.nn.embedding_lookup(normalized_embeddings, valid_dataset)\n",
    "similarity = tf.matmul(valid_embeddings, normalized_embeddings, transpose_b=True)\n",
    "\n",
    "# Add variable initializer.\n",
    "init = tf.global_variables_initializer()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Train the model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Iteration: 0\tAverage loss at step  0 :  294.812255859375\n",
      "Nearest to over: tt, tuned, manichaeans, fractional, cambridge, balaguer, fluoride, strenuously,\n",
      "Nearest to one: imagines, tijuana, hindrance, motorcyclist, steadfastly, lords, letting, hutchinson,\n",
      "Nearest to were: bezier, antibodies, nicknamed, panthers, compiler, tao, smarter, busy,\n",
      "Nearest to may: failure, rna, efficacious, aspirin, lecompton, definitive, geese, amphibious,\n",
      "Nearest to two: annihilate, bettors, wir, cindy, epinephrine, team, voluntarily, crystallize,\n",
      "Nearest to its: knob, abeokuta, bracelet, bastards, ivens, objectivity, blanton, cold,\n",
      "Nearest to than: lame, watts, stones, sram, elves, zarqawi, applets, cloves,\n",
      "Nearest to these: pedro, condoned, neck, ssn, supervising, doug, thereto, melton,\n",
      "Nearest to they: lowly, deportation, shrewd, reznor, tojo, decadent, occured, risotto,\n",
      "Nearest to is: interests, golfers, dropouts, richards, egyptians, legionnaires, leonel, opener,\n",
      "Nearest to up: clair, drives, steadfast, missed, nashville, vinland, kilowatts, anal,\n",
      "Nearest to he: transitioned, winchell, resh, goldsmiths, standardised, markings, pursued, satirized,\n",
      "Nearest to people: blissymbolics, mike, buffers, untouchables, carolingian, posted, ville, hypertalk,\n",
      "Nearest to more: cactus, sta, reformation, poets, diligently, rsc, ravaged, nabokov,\n",
      "Nearest to was: russo, rammed, investiture, glucagon, heck, adventurer, sharada, homing,\n",
      "Nearest to UNK: reykjav, fi, rosalyn, mainline, archaeologist, ean, armstrong, stevenage,\n",
      "Iteration: 2000\tAverage loss at step  2000 :  131.2194905796051\n",
      "Iteration: 4000\tAverage loss at step  4000 :  62.389544379234316\n",
      "Iteration: 6000\tAverage loss at step  6000 :  42.05166946268081\n",
      "Iteration: 8000\tAverage loss at step  8000 :  30.95690538942814\n",
      "Iteration: 10000\tAverage loss at step  10000 :  26.22309562468529\n",
      "Nearest to over: reversal, subproblems, spectral, diverged, daimler, stadium, calais, lacan,\n",
      "Nearest to one: nine, seven, three, two, eight, five, six, four,\n",
      "Nearest to were: was, asks, ions, durrani, murchison, recovered, sugarcane, alexandre,\n",
      "Nearest to may: are, must, is, nitroglycerin, atomism, archaelogical, that, arif,\n",
      "Nearest to two: zero, one, three, seven, nine, four, six, five,\n",
      "Nearest to its: the, tarski, checkerboard, stating, fixtures, milne, peaked, dopamine,\n",
      "Nearest to than: hurdler, conformation, tracking, jacket, rn, sights, subproblems, dass,\n",
      "Nearest to these: genes, appeasement, mpla, it, provisions, everywhere, actinium, informed,\n",
      "Nearest to they: it, fianna, casablanca, skillfully, not, conformations, outposts, carrot,\n",
      "Nearest to is: are, was, be, thar, in, UNK, launch, a,\n",
      "Nearest to up: aquarius, alhazred, vastly, tt, priscilla, abolish, lubricants, newsweek,\n",
      "Nearest to he: it, also, and, darker, was, which, underwent, the,\n",
      "Nearest to people: antidepressants, brainwashed, provisions, six, bit, signers, vee, blockade,\n",
      "Nearest to more: atomism, illyrians, abuse, astatine, kierkegaard, digs, and, steppe,\n",
      "Nearest to was: by, the, ufos, is, forever, and, hephaestus, UNK,\n",
      "Nearest to UNK: one, the, five, two, seven, and, of, six,\n"
     ]
    }
   ],
   "source": [
    "num_steps = 10001\n",
    "\n",
    "with tf.Session() as session:\n",
    "    init.run()\n",
    "\n",
    "    average_loss = 0\n",
    "    for step in range(num_steps):\n",
    "        print(\"\\rIteration: {}\".format(step), end=\"\\t\")\n",
    "        batch_inputs, batch_labels = generate_batch(batch_size, num_skips, skip_window)\n",
    "        feed_dict = {train_inputs : batch_inputs, train_labels : batch_labels}\n",
    "\n",
    "        # We perform one update step by evaluating the training op (including it\n",
    "        # in the list of returned values for session.run()\n",
    "        _, loss_val = session.run([training_op, loss], feed_dict=feed_dict)\n",
    "        average_loss += loss_val\n",
    "\n",
    "        if step % 2000 == 0:\n",
    "            if step > 0:\n",
    "                average_loss /= 2000\n",
    "            # The average loss is an estimate of the loss over the last 2000 batches.\n",
    "            print(\"Average loss at step \", step, \": \", average_loss)\n",
    "            average_loss = 0\n",
    "\n",
    "        # Note that this is expensive (~20% slowdown if computed every 500 steps)\n",
    "        if step % 10000 == 0:\n",
    "            sim = similarity.eval()\n",
    "            for i in range(valid_size):\n",
    "                valid_word = vocabulary[valid_examples[i]]\n",
    "                top_k = 8 # number of nearest neighbors\n",
    "                nearest = (-sim[i, :]).argsort()[1:top_k+1]\n",
    "                log_str = \"Nearest to %s:\" % valid_word\n",
    "                for k in range(top_k):\n",
    "                    close_word = vocabulary[nearest[k]]\n",
    "                    log_str = \"%s %s,\" % (log_str, close_word)\n",
    "                print(log_str)\n",
    "\n",
    "    final_embeddings = normalized_embeddings.eval()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's save the final embeddings (of course you can use a TensorFlow `Saver` if you prefer):"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.save(\"./my_final_embeddings.npy\", final_embeddings)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Plot the embeddings"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_with_labels(low_dim_embs, labels):\n",
    "    assert low_dim_embs.shape[0] >= len(labels), \"More labels than embeddings\"\n",
    "    plt.figure(figsize=(18, 18))  #in inches\n",
    "    for i, label in enumerate(labels):\n",
    "        x, y = low_dim_embs[i,:]\n",
    "        plt.scatter(x, y)\n",
    "        plt.annotate(label,\n",
    "                     xy=(x, y),\n",
    "                     xytext=(5, 2),\n",
    "                     textcoords='offset points',\n",
    "                     ha='right',\n",
    "                     va='bottom')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABBcAAAP4CAYAAACGCRToAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3XtclVXa//HPBhFUDDVNsZgU88hZIVHCE6WoeNa01ESf0hqbGictHTs4ZTY9MWVmOT99PERSojimpDUmYqJSCoaIiMd2mqKiJCEKsuH+/cG4J5NMAtkcvu/Xa164173udV9rz2zHfbHWtUyGYSAiIiIiIiIi8nvZ2ToAEREREREREanelFwQERERERERkXJRckFEREREREREykXJBREREREREREpFyUXRERERERERKRclFwQERERERERkXJRckFEREREREREykXJBREREREREREpFyUXRERERERERKRc6tg6gKZNmxqtWrWydRgiIiIiIiIi8jPJycnnDcNodit9bZ5caNWqFUlJSbYOQ0RERERERER+xmQyfX+rfbUtQkRERERERETKRckFERERERERESkXJRdEREREREREpFyUXBARERERERGRclFyQURERERERETKRckFERERERERESkXJRdEREREREREpFyUXBARERERERGRclFyQURERERERETKRckFERERERERESkXJRdEREREREREpFyUXBARERERERGRclFyQURERERERETKRckFERERERERESkXJRdEREREREREpFyUXBARERERERGRclFyQURERERERETKRckFERERERERESkXJRdEREREREREpFyUXBARERERERGRclFyQURERERERETKRckFERERERERESmXCk8umEymMSaT6aDJZMozmUzHTCZTcEU/Q0RERERERESqjjoVOZjJZHoIeBMYDewGXCtyfBERERERERGpeio0uQD8DXjVMIyv//P6VAWPLyIiIiIiIiJVTIVtizCZTPaAP9DMZDIdNZlMP5hMpoUmk6leRT1DRERERERERKqeiqy50BxwAEYCwYAv4Ae8+MuOJpNpsslkSjKZTElZWVkVGIKIiIiIiIiIVLaKTC5c+c/P9wzDyDQM4zzwNjDglx0Nw1hsGIa/YRj+zZo1q8AQRERERERERKSyVVhy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iIhILaPkgohIFfXLlQZms5nQ0FACAwPZtWsXPj4+uLq6kpyczLlz54iKiiI9PZ2kpCQWLlzId999x6OPPsqlS5cYMmSIdRzDMPjTn/7El19+iZubG3Xr1i31+Zs3b+aVV16hoKCANm3asHz5cpydnW/7vEVERESk+lFBRxGRauTo0aM899xzZGRkkJGRwUcffcSOHTuIiIhg3rx51/V99tlneeqpp9i/fz+urq7W9nXr1nHo0CHS09OJjIxk165dNzzn/PnzzJ07ly1btrB37178/f15++23b/v8RERERKR60soFEZEq7trKgzNnzmBvb8/x48fx8vIiNzeXvLw8/Pz8CAgIwGw28/nnnxMfH8/27ds5evQoa9euBWD8+PG88MILAGzfvp1HHnkEe3t7WrZsSZ8+fW545tdff016ejpBQUEAXL16lW7dulXepEVERESkWtHKBRGRKs7JyYl169axceNG3N3dee655zAMA39/f5o3b05KSgqzZ8/m4sWLnD17llGjRpGSkoLFYiEhIeF3PdMwDB566CFSUlJISUkhPT2dpUuXVvDMRERERKSmUHJBRKSKMwyDv/71r4SGhmI2mzl16hRnz569od+lS5dIS0sjOjqazp074+DgwMcffwxAVFSUtV+PHj2Ijo6mqKiIzMxM4uPjbxgrMDCQnTt3cvToUQDy8vI4fPjwbZqhiIiIiFR3Si6IiFRxUVFRZGVlERsbS5s2bWjevDn5+fml9h04cCBjxowhJSWFtLQ0Dhw4gJeXF6dOnbL2GTZsGG3btqVTp0489thjpW53aNasGStWrOCRRx7B29ubbt26kZGRcdvmKCIiIiLVm8kwDJsG4O/vbyQlJdk0BhGRqujaaRHvvvsuR48e5b333iM+Pp4+ffrw3Xff0bBhQzp37sz3338PlJzu8NJLLxEXF4ezszOnTp3CwcGBu+66y8YzEREREZHqyGQyJRuG4X8rfVXQUUSkihs7diyDBg3Cy8sLf39/OnToAMCdd95JUFAQnp6e9O/fn7feeouDBw9aVyI4OzuzcuXKMicXUlNTiYuLIycnBxcXF0JCQvD29q7weYmIiIhIzaGVCyIiYpWamkpsbCyFhYXWNgcHBwYNGqQEg4iIiEgtU5aVC6q5ICJSA6w9k43/rgO4xqfgv+sAa89k/65x4uLirkssABQWFhIXF1cR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PvroI3r27EmHDh0wm80cO3YMKCkW+3OPP/4448aNY9SoUdjb21dK7NVRSkqKdctJdHQ0J0+e5Pz588ydO5ctW7awd+9e/P39efvtt20dqoiI1ABKLojIDcxmMx06dCA8PJx27doxduxYtmzZQlBQEG3btmX37t1kZ2czdOhQvL29CQwMJDU1leLiYlq1asXFixetY7Vt25azZ8+SlZXFiBEjCAgIICAggJ07dwIwZ84cJkyYQHBwMPfeey8BWQFkrc7iyItHMEeYMSwGTvZOhDUYzOhNMxjw0ROMjX6O83a5NBreloHTHuaFF17g/vvvp127diQkJHD16lVefvlloqOj8fX1JTo62lZvpUiVU1RUZLNnt2/fnvfff5+OHTvy448/Mm3aNJYvX86oUaPw8vLCzs6OJ598EicnJxYvXszAgQPp3Lkzd911fdHWwYMHc+nSJW2J+A0hISG4uLjg5OREp06d+P777/n6669JT08nKCgIX19fPvzwQ77//ntbhyoiIjWAjqIUkVIdPXqUNWvWsGzZMgICAvj444/ZsWMHGzZsYN68ebi5ueHn58enn37K1q1beeyxx0hJSWHIkCGsW7eOiRMn8s0333DvvffSvHlzHn30UaZNm8YDDzzAiRMn6NevHwcPHgTg2LFjxMfHk56eTrdu3Xhh4QvsnLiTb974hjqH6vDi/7zImxPfZP0X62nWrBnR0dEs+HcMy/wGAGCxWNi9ezebNm3ib3/7G1u2bOHVV18lKSmJhQsX2vJtlP/o3r07u3btummfhIQEnnzySRwcHEhMTKRevXq3Pa6UlBROnz7NgAEl/1vasGED6enpzJw587Y/+/d46623cHR05JlnnmHatGns27ePrVu3snXrVpYuXUpYWBjz5s3DMAwGDhzIm2++CZQU/JsyZQpbtmzh/fff59KlS9edxHDNV199xbPPPguUbGHYvn07DRs2rJDYW7VqRUZGxg3t174AR0RE4O//32LUoaGhpfYH2LdvHz4+PnTo0KFCYqupHB3/u23M3t4ei8WCYRg89NBDN6wGERERKS8lF0SkVK1bt8bLywsADw8PQkJCMJlMeHl5YTab+f7771m7di0Affr04cKFC/z000+MHj2aV199lYkTJ7Jq1SpGjx4NlFR1T09Pt47/008/Wff59u/fHwcHB7y8vCgqKuLliS9jMpl4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EKkCyOVy5HI5Ghri3nd1RvzriYhUEd4V0bMXknn31drLkatXrxIYGMjJkye5fPky3377LZMnT2bkyJHExcXh4+PDlClThP4pKSlERkZy4MABZs+ezcmTJxkwYACdOnUiNjaWefPmce3aNaKiokhLSyM/P58HDx4QHR3NuHHjmDp1Kl9++SUymYz69etTUFBQwqYXibs1a9bsvXQsJCcnY2Vlha+vL61atcLHx4fjx4/j5uZGy5YtuXDhAunp6XTo0IE6derQrl074uLiAPj999+xt7fH3t6eNm3akJWVxezZs4mIiMDe3p4VK1ZU8uyqH6U5N6uy07O068rW1pZjx44xa9YsIiIiMDAwwMDAAB0dHT777DP27NmDnp5ehdpWlUR7RUTKC2XpaltbW+bNm8fixYuZMGECu3btIj4+njFjxpQoaSsiAiUjNbds2YKrqysODg4MGjRISCETU2iqD6JzQUSkitDKxYTOPlbCQ3vtetp09rGqlrnJpWLQ+NXay5GTJ08yaNAgjIyMAKhXrx5nz54VdrSHDx9OZGSk0L9v375oaGjw4Ycf8s8//6gdUy6X8+mnnxIfH09sbCwjRoxg+PDhaGhoUL9+fTp16kRUVBSamppCvunzx8+ZM4fY2FhiY2O5efMmn332GQC1atUq719BteHmzZv861//IiEhgYSEBLZv387vv/9OcHAwS5cuZeHChbRo0YKOHTuydOlSRowYAUBwcDBr1qwhNjaWiIgIdHV1+frrr3F3dyc2Npbp06dX8syqH9XR6VnadaVuAVSjRg0uXLjAwIEDOXDgAD169Kgwu8pLv0JEpKpx//599PT0GDZsGP7+/ly8eBEAIyMjsrOzBY2F4lhZWZGcnExSkiLF6ueff36rNotUHRITE5kwYQK///4769ev5/jx41y8eBEnJyeWL18uptBUM8S0CBGRKkQrF5N3y5nwPJ4LFBoLxVMjtHQV7VWM4grwcrmcLl26COkRgBDmqXwwAl4qzKavr6+SX929e3fmz5+Pj48PtWvX5t69e2hpaZXzTCqfoKAgtLW1mTJlCtOnT+fy5cucPHmSkydPsn79ej755BOWLl2KXC6nQ4cOmJubY2trS+3atWnatCknTpzg3LlzpKenc/jwYTQ0NBg0aBAAXbp04dGjRzx58gQ3NzdmzJiBj48P/fv3p3Hjindaveu8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7g3Addddx7x58054njZt2lC3bl1iYmJISkoiPT39uMfFxsZy5ZVXHtO+cOFCVq9eTfv27UlKSuL5559n48aNVK1alfLly/Ob3/yG119/nYoVK37/i5UkSZLOAI5ckFSilSlThtzcXAByc3P5+uuvCx4rV65cwd9jY2M5ePDgcc9Rvnz5466zEIYhXbp04eWXXz7msUWLFjF79mymTJnCE088wZw5cyK9FEmSJKnEcuSCpGKnc+fOTJ48mV27dgGQkZHBhRdeyCuvvALApEmT6NChA5C3OOOSJUsAmD59Ojk5OSc8/1lnncVXX311wuPatm3L/PnzWb9+PZA3feKTTz4hOzubrKwsLrnkEv785z+zfPny73Wd0plkzJgxNGnShD59+kS7FEmSFAWOXJBU7DRr1oyhQ4dy0UUXERsbS3JyMmPHjuWGG25g5MiRnH322UyYMAGA/v37c/nll5OYmMjFF19MpUqVTnj+m266iYsvvpjatWvz3nvvfetxZ599NhMnTuTXv/41Bw4cAGD48OGcddZZXH755ezfv58wDBk9enThXLhUgj355JOkpqZSt27daJciSZKiwK0oJekUTFu2hZHvrGNr5j5qV6vAoG7x9EyuE+2ydArS09O5+OKLadu2LQsWLKB169bccMMN3H///Wzfvp1JkybRrFkzBg4cyMqVK8nJyWHYsGFcfvnlTJw4kenTp7N3714+++wzrrjiCv7nf/4n2pcUo1+QxwAAD3FJREFUdQMGDGD8+PHEx8dz4403cuedd0a7JEmSVAhOZStKwwVJOknTlm1hyOsfsy/nUEFbhbhYHunVwoChBElPT+cnP/kJy5Yto1mzZrRu3ZrExESee+45pk+fzoQJE2jatClNmzbl2muvJTMzkzZt2rBs2TImT57MAw88wLJlyyhXrhzx8fHMmzePH/3oR9G+rKirX78+ixcvLliIVZIklXynEi44LUKSTtLId9YdESwA7Ms5xMh31hkulDANGjSgRYsWQN40nJSUFIIgoEWLFqSnp7N582amT5/OqFGjANi/fz+ff/45ACkpKVStWhWApk2bsnHjRsMFSZJU6hkuSNJJ2pq575TaVXwdvpNITExMwfcxMTEcPHiQ2NhYpk6dSnx8/BHP++ijj056FxJJkqTSxN0iJOkk1a5W4ZTaVXJ169aNsWPHkj91cNmyZVGu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\n",
      "text/plain": [
       "<Figure size 1296x1296 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.manifold import TSNE\n",
    "\n",
    "tsne = TSNE(perplexity=30, n_components=2, init='pca', n_iter=5000)\n",
    "plot_only = 500\n",
    "low_dim_embs = tsne.fit_transform(final_embeddings[:plot_only,:])\n",
    "labels = [vocabulary[i] for i in range(plot_only)]\n",
    "plot_with_labels(low_dim_embs, labels)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Machine Translation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The `basic_rnn_seq2seq()` function creates a simple Encoder/Decoder model: it first runs an RNN to encode `encoder_inputs` into a state vector, then runs a decoder initialized with the last encoder state on `decoder_inputs`. Encoder and decoder use the same RNN cell type but they don't share parameters."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "metadata": {},
   "outputs": [],
   "source": [
    "import tensorflow as tf\n",
    "reset_graph()\n",
    "\n",
    "n_steps = 50\n",
    "n_neurons = 200\n",
    "n_layers = 3\n",
    "num_encoder_symbols = 20000\n",
    "num_decoder_symbols = 20000\n",
    "embedding_size = 150\n",
    "learning_rate = 0.01\n",
    "\n",
    "X = tf.placeholder(tf.int32, [None, n_steps]) # English sentences\n",
    "Y = tf.placeholder(tf.int32, [None, n_steps]) # French translations\n",
    "W = tf.placeholder(tf.float32, [None, n_steps - 1, 1])\n",
    "Y_input = Y[:, :-1]\n",
    "Y_target = Y[:, 1:]\n",
    "\n",
    "encoder_inputs = tf.unstack(tf.transpose(X)) # list of 1D tensors\n",
    "decoder_inputs = tf.unstack(tf.transpose(Y_input)) # list of 1D tensors\n",
    "\n",
    "lstm_cells = [tf.contrib.rnn.BasicLSTMCell(num_units=n_neurons)\n",
    "              for layer in range(n_layers)]\n",
    "cell = tf.contrib.rnn.MultiRNNCell(lstm_cells)\n",
    "\n",
    "output_seqs, states = tf.contrib.legacy_seq2seq.embedding_rnn_seq2seq(\n",
    "    encoder_inputs,\n",
    "    decoder_inputs,\n",
    "    cell,\n",
    "    num_encoder_symbols,\n",
    "    num_decoder_symbols,\n",
    "    embedding_size)\n",
    "\n",
    "logits = tf.transpose(tf.unstack(output_seqs), perm=[1, 0, 2])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "metadata": {},
   "outputs": [],
   "source": [
    "logits_flat = tf.reshape(logits, [-1, num_decoder_symbols])\n",
    "Y_target_flat = tf.reshape(Y_target, [-1])\n",
    "W_flat = tf.reshape(W, [-1])\n",
    "xentropy = W_flat * tf.nn.sparse_softmax_cross_entropy_with_logits(labels=Y_target_flat, logits=logits_flat)\n",
    "loss = tf.reduce_mean(xentropy)\n",
    "optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)\n",
    "training_op = optimizer.minimize(loss)\n",
    "\n",
    "init = tf.global_variables_initializer()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "# Exercise solutions"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. to 6."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "See Appendix A."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 7. Embedded Reber Grammars"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "First we need to build a function that generates strings based on a grammar. The grammar will be represented as a list of possible transitions for each state. A transition specifies the string to output (or a grammar to generate it) and the next state."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.random.seed(42)\n",
    "\n",
    "default_reber_grammar = [\n",
    "    [(\"B\", 1)],           # (state 0) =B=>(state 1)\n",
    "    [(\"T\", 2), (\"P\", 3)], # (state 1) =T=>(state 2) or =P=>(state 3)\n",
    "    [(\"S\", 2), (\"X\", 4)], # (state 2) =S=>(state 2) or =X=>(state 4)\n",
    "    [(\"T\", 3), (\"V\", 5)], # and so on...\n",
    "    [(\"X\", 3), (\"S\", 6)],\n",
    "    [(\"P\", 4), (\"V\", 6)],\n",
    "    [(\"E\", None)]]        # (state 6) =E=>(terminal state)\n",
    "\n",
    "embedded_reber_grammar = [\n",
    "    [(\"B\", 1)],\n",
    "    [(\"T\", 2), (\"P\", 3)],\n",
    "    [(default_reber_grammar, 4)],\n",
    "    [(default_reber_grammar, 5)],\n",
    "    [(\"T\", 6)],\n",
    "    [(\"P\", 6)],\n",
    "    [(\"E\", None)]]\n",
    "\n",
    "def generate_string(grammar):\n",
    "    state = 0\n",
    "    output = []\n",
    "    while state is not None:\n",
    "        index = np.random.randint(len(grammar[state]))\n",
    "        production, state = grammar[state][index]\n",
    "        if isinstance(production, list):\n",
    "            production = generate_string(grammar=production)\n",
    "        output.append(production)\n",
    "    return \"\".join(output)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's generate a few strings based on the default Reber grammar:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BTXXTTVPXTVPXTTVPSE BPVPSE BTXSE BPVVE BPVVE BTSXSE BPTVPXTTTVVE BPVVE BTXSE BTXXVPSE BPTTTTTTTTVVE BTXSE BPVPSE BTXSE BPTVPSE BTXXTVPSE BPVVE BPVVE BPVVE BPTTVVE BPVVE BPVVE BTXXVVE BTXXVVE BTXXVPXVVE "
     ]
    }
   ],
   "source": [
    "for _ in range(25):\n",
    "    print(generate_string(default_reber_grammar), end=\" \")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Looks good. Now let's generate a few strings based on the embedded Reber grammar:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BTBPVVETE BTBTSSSSSSSXXVVETE BPBTSSSXXTTTTVPSEPE BTBPTTVVETE BPBTXXTVVEPE BTBTXSETE BPBTSSSSSXXTTVPXVPXTTTVVEPE BPBTSSXXTVPSEPE BPBPTTTTTTTVPSEPE BTBTSXSETE BPBPTVPXVVEPE BPBPVVEPE BPBPTVVEPE BTBPTTVPXTTVPSETE BTBTSSXSETE BTBTXXTTVVETE BPBTSXSEPE BPBPTVPSEPE BTBPVVETE BPBTXXTTTVPXTVVEPE BPBPTTVPXTVVEPE BTBPVVETE BPBPTVPXVPXTVVEPE BTBPVVETE BPBTSXSEPE "
     ]
    }
   ],
   "source": [
    "for _ in range(25):\n",
    "    print(generate_string(embedded_reber_grammar), end=\" \")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Okay, now we need a function to generate strings that do not respect the grammar. We could generate a random string, but the task would be a bit too easy, so instead we will generate a string that respects the grammar, and we will corrupt it by changing just one character:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "metadata": {},
   "outputs": [],
   "source": [
    "def generate_corrupted_string(grammar, chars=\"BEPSTVX\"):\n",
    "    good_string = generate_string(grammar)\n",
    "    index = np.random.randint(len(good_string))\n",
    "    good_char = good_string[index]\n",
    "    bad_char = np.random.choice(sorted(set(chars) - set(good_char)))\n",
    "    return good_string[:index] + bad_char + good_string[index + 1:]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's look at a few corrupted strings:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BTTTXXVVETE BPBTXXSPXTVVEPE BTBTXSPTE BPTTSXXTVPXVVEPE PPBPVPSEPE BTBPTVETE BPTTSSSSSXSEPE BPBSVPSEPE BTBPVVESE BPBTXSEPS BEBTXSETE XPBTXXTVPSEPE BTBPVVEPE BTXPTVVETE BTBPVXETE BVBTXSETE BPTTXXVPXVPSEPE BTBPXVPSETE STBPTTVPXVPXTVPSETE BPBPTVPSESE BPBPVEEPE ETBTXSETE BTBTXSVTE BPBTXXVPSEPP BTBTXXVPSETS "
     ]
    }
   ],
   "source": [
    "for _ in range(25):\n",
    "    print(generate_corrupted_string(embedded_reber_grammar), end=\" \")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "It's not possible to feed a string directly to an RNN: we need to convert it to a sequence of vectors, first. Each vector will represent a single letter, using a one-hot encoding. For example, the letter \"B\" will be represented as the vector `[1, 0, 0, 0, 0, 0, 0]`, the letter E will be represented as `[0, 1, 0, 0, 0, 0, 0]` and so on. Let's write a function that converts a string to a sequence of such one-hot vectors. Note that if the string is shorted than `n_steps`, it will be padded with zero vectors (later, we will tell TensorFlow how long each string actually is using the `sequence_length` parameter)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "metadata": {},
   "outputs": [],
   "source": [
    "def string_to_one_hot_vectors(string, n_steps, chars=\"BEPSTVX\"):\n",
    "    char_to_index = {char: index for index, char in enumerate(chars)}\n",
    "    output = np.zeros((n_steps, len(chars)), dtype=np.int32)\n",
    "    for index, char in enumerate(string):\n",
    "        output[index, char_to_index[char]] = 1.\n",
    "    return output"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 1, 0, 0],\n",
       "       [1, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 1, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 1],\n",
       "       [0, 0, 0, 1, 0, 0, 0],\n",
       "       [0, 1, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 1, 0, 0],\n",
       "       [0, 1, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0]], dtype=int32)"
      ]
     },
     "execution_count": 121,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "string_to_one_hot_vectors(\"BTBTXSETE\", 12)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can now generate the dataset, with 50% good strings, and 50% bad strings:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "metadata": {},
   "outputs": [],
   "source": [
    "def generate_dataset(size):\n",
    "    good_strings = [generate_string(embedded_reber_grammar)\n",
    "                    for _ in range(size // 2)]\n",
    "    bad_strings = [generate_corrupted_string(embedded_reber_grammar)\n",
    "                   for _ in range(size - size // 2)]\n",
    "    all_strings = good_strings + bad_strings\n",
    "    n_steps = max([len(string) for string in all_strings])\n",
    "    X = np.array([string_to_one_hot_vectors(string, n_steps)\n",
    "                  for string in all_strings])\n",
    "    seq_length = np.array([len(string) for string in all_strings])\n",
    "    y = np.array([[1] for _ in range(len(good_strings))] +\n",
    "                 [[0] for _ in range(len(bad_strings))])\n",
    "    rnd_idx = np.random.permutation(size)\n",
    "    return X[rnd_idx], seq_length[rnd_idx], y[rnd_idx]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, l_train, y_train = generate_dataset(10000)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's take a look at the first training instances:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 1, 0, 0],\n",
       "       [1, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 1, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 1, 0],\n",
       "       [0, 0, 1, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 1],\n",
       "       [0, 0, 0, 0, 1, 0, 0],\n",
       "       [0, 0, 0, 0, 1, 0, 0],\n",
       "       [0, 0, 0, 0, 1, 0, 0],\n",
       "       [0, 0, 0, 0, 1, 0, 0],\n",
       "       [0, 0, 0, 0, 1, 0, 0],\n",
       "       [0, 0, 0, 0, 1, 0, 0],\n",
       "       [0, 0, 0, 0, 1, 0, 0],\n",
       "       [0, 0, 0, 0, 1, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 1, 0],\n",
       "       [0, 0, 1, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 1],\n",
       "       [0, 0, 0, 0, 0, 1, 0],\n",
       "       [0, 0, 0, 0, 0, 1, 0],\n",
       "       [0, 0, 0, 1, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 1, 0, 0],\n",
       "       [0, 1, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0],\n",
       "       [0, 0, 0, 0, 0, 0, 0]], dtype=int32)"
      ]
     },
     "execution_count": 124,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train[0]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "It's padded with a lot of zeros because the longest string in the dataset is that long. How long is this particular string?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "23"
      ]
     },
     "execution_count": 125,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "l_train[0]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "What class is it?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0])"
      ]
     },
     "execution_count": 126,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train[0]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Perfect! We are ready to create the RNN to identify good strings. We build a sequence classifier very similar to the one we built earlier to classify MNIST images, with two main differences:\n",
    "* First, the input strings have variable length, so we need to specify the `sequence_length` when calling the `dynamic_rnn()` function.\n",
    "* Second, this is a binary classifier, so we only need one output neuron that will output, for each input string, the estimated log probability that it is a good string. For multiclass classification, we used `sparse_softmax_cross_entropy_with_logits()` but for binary classification we use `sigmoid_cross_entropy_with_logits()`.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "metadata": {},
   "outputs": [],
   "source": [
    "reset_graph()\n",
    "\n",
    "possible_chars = \"BEPSTVX\"\n",
    "n_inputs = len(possible_chars)\n",
    "n_neurons = 30\n",
    "n_outputs = 1\n",
    "\n",
    "learning_rate = 0.02\n",
    "momentum = 0.95\n",
    "\n",
    "X = tf.placeholder(tf.float32, [None, None, n_inputs], name=\"X\")\n",
    "seq_length = tf.placeholder(tf.int32, [None], name=\"seq_length\")\n",
    "y = tf.placeholder(tf.float32, [None, 1], name=\"y\")\n",
    "\n",
    "gru_cell = tf.contrib.rnn.GRUCell(num_units=n_neurons)\n",
    "outputs, states = tf.nn.dynamic_rnn(gru_cell, X, dtype=tf.float32,\n",
    "                                    sequence_length=seq_length)\n",
    "\n",
    "logits = tf.layers.dense(states, n_outputs, name=\"logits\")\n",
    "y_pred = tf.cast(tf.greater(logits, 0.), tf.float32, name=\"y_pred\")\n",
    "y_proba = tf.nn.sigmoid(logits, name=\"y_proba\")\n",
    "\n",
    "xentropy = tf.nn.sigmoid_cross_entropy_with_logits(labels=y, logits=logits)\n",
    "loss = tf.reduce_mean(xentropy, name=\"loss\")\n",
    "optimizer = tf.train.MomentumOptimizer(learning_rate=learning_rate,\n",
    "                                       momentum=momentum,\n",
    "                                       use_nesterov=True)\n",
    "training_op = optimizer.minimize(loss)\n",
    "\n",
    "correct = tf.equal(y_pred, y, name=\"correct\")\n",
    "accuracy = tf.reduce_mean(tf.cast(correct, tf.float32), name=\"accuracy\")\n",
    "\n",
    "init = tf.global_variables_initializer()\n",
    "saver = tf.train.Saver()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now let's generate a validation set so we can track progress during training:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_val, l_val, y_val = generate_dataset(5000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "   0  Train loss: 0.6727, accuracy: 66.00%  Validation accuracy: 59.34%\n",
      "   1  Train loss: 0.6553, accuracy: 68.00%  Validation accuracy: 61.82%\n",
      "   2  Train loss: 0.6200, accuracy: 76.00%  Validation accuracy: 72.50%\n",
      "   3  Train loss: 0.4908, accuracy: 82.00%  Validation accuracy: 73.22%\n",
      "   4  Train loss: 0.4798, accuracy: 84.00%  Validation accuracy: 80.02%\n",
      "   5  Train loss: 0.6061, accuracy: 74.00%  Validation accuracy: 72.68%\n",
      "   6  Train loss: 0.5447, accuracy: 78.00%  Validation accuracy: 74.30%\n",
      "   7  Train loss: 0.3604, accuracy: 88.00%  Validation accuracy: 86.40%\n",
      "   8  Train loss: 0.3276, accuracy: 86.00%  Validation accuracy: 87.50%\n",
      "   9  Train loss: 0.1783, accuracy: 96.00%  Validation accuracy: 94.18%\n",
      "  10  Train loss: 0.1361, accuracy: 98.00%  Validation accuracy: 95.10%\n",
      "  11  Train loss: 0.1164, accuracy: 98.00%  Validation accuracy: 96.40%\n",
      "  12  Train loss: 0.2118, accuracy: 94.00%  Validation accuracy: 97.26%\n",
      "  13  Train loss: 0.0821, accuracy: 98.00%  Validation accuracy: 97.92%\n",
      "  14  Train loss: 0.0633, accuracy: 92.00%  Validation accuracy: 94.28%\n",
      "  15  Train loss: 0.0909, accuracy: 98.00%  Validation accuracy: 97.76%\n",
      "  16  Train loss: 0.0116, accuracy: 100.00%  Validation accuracy: 99.86%\n",
      "  17  Train loss: 0.0011, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  18  Train loss: 0.0008, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  19  Train loss: 0.0006, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  20  Train loss: 0.0004, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  21  Train loss: 0.0004, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  22  Train loss: 0.0003, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  23  Train loss: 0.0003, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  24  Train loss: 0.0003, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  25  Train loss: 0.0002, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  26  Train loss: 0.0002, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  27  Train loss: 0.0002, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  28  Train loss: 0.0002, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  29  Train loss: 0.0002, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  30  Train loss: 0.0002, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  31  Train loss: 0.0002, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  32  Train loss: 0.0002, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  33  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  34  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  35  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  36  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  37  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  38  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  39  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  40  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  41  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  42  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  43  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  44  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  45  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  46  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  47  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  48  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n",
      "  49  Train loss: 0.0001, accuracy: 100.00%  Validation accuracy: 100.00%\n"
     ]
    }
   ],
   "source": [
    "n_epochs = 50\n",
    "batch_size = 50\n",
    "\n",
    "with tf.Session() as sess:\n",
    "    init.run()\n",
    "    for epoch in range(n_epochs):\n",
    "        X_batches = np.array_split(X_train, len(X_train) // batch_size)\n",
    "        l_batches = np.array_split(l_train, len(l_train) // batch_size)\n",
    "        y_batches = np.array_split(y_train, len(y_train) // batch_size)\n",
    "        for X_batch, l_batch, y_batch in zip(X_batches, l_batches, y_batches):\n",
    "            loss_val, _ = sess.run(\n",
    "                [loss, training_op],\n",
    "                feed_dict={X: X_batch, seq_length: l_batch, y: y_batch})\n",
    "        acc_train = accuracy.eval(feed_dict={X: X_batch, seq_length: l_batch, y: y_batch})\n",
    "        acc_val = accuracy.eval(feed_dict={X: X_val, seq_length: l_val, y: y_val})\n",
    "        print(\"{:4d}  Train loss: {:.4f}, accuracy: {:.2f}%  Validation accuracy: {:.2f}%\".format(\n",
    "            epoch, loss_val, 100 * acc_train, 100 * acc_val))\n",
    "        saver.save(sess, \"./my_reber_classifier\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now let's test our RNN on two tricky strings: the first one is bad while the second one is good. They only differ by the second to last character. If the RNN gets this right, it shows that it managed to notice the pattern that the second letter should always be equal to the second to last letter. That requires a fairly long short-term memory (which is the reason why we used a GRU cell)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "INFO:tensorflow:Restoring parameters from ./my_reber_classifier\n",
      "\n",
      "Estimated probability that these are Reber strings:\n",
      "BPBTSSSSSSSXXTTVPXVPXTTTTTVVETE: 13.30%\n",
      "BPBTSSSSSSSXXTTVPXVPXTTTTTVVEPE: 99.97%\n"
     ]
    }
   ],
   "source": [
    "test_strings = [\n",
    "    \"BPBTSSSSSSSXXTTVPXVPXTTTTTVVETE\",\n",
    "    \"BPBTSSSSSSSXXTTVPXVPXTTTTTVVEPE\"]\n",
    "l_test = np.array([len(s) for s in test_strings])\n",
    "max_length = l_test.max()\n",
    "X_test = [string_to_one_hot_vectors(s, n_steps=max_length)\n",
    "          for s in test_strings]\n",
    "\n",
    "with tf.Session() as sess:\n",
    "    saver.restore(sess, \"./my_reber_classifier\")\n",
    "    y_proba_val = y_proba.eval(feed_dict={X: X_test, seq_length: l_test})\n",
    "\n",
    "print()\n",
    "print(\"Estimated probability that these are Reber strings:\")\n",
    "for index, string in enumerate(test_strings):\n",
    "    print(\"{}: {:.2f}%\".format(string, 100 * y_proba_val[index][0]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Ta-da! It worked fine. The RNN found the correct answers with high confidence. :)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 8. and 9."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Coming soon..."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.6"
  },
  "nav_menu": {},
  "toc": {
   "navigate_menu": true,
   "number_sections": true,
   "sideBar": true,
   "threshold": 6,
   "toc_cell": false,
   "toc_section_display": "block",
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
